|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
前些天,在CSDN上看到了一个消息,说是ASP.NETAJAX成功在Linux上运行,这一点对我触动很大,而且引发了我许多感叹,所以想写出来分享一下。良多书本都说Java撑持传援用挪用的体例,相似于C++中的Person&a援用挪用,而最近编程碰到一系列成绩让我对此发生了嫌疑,因而将这些办法逐一列出,我们来一同看看JAVA中的挪用体例:
看上面的程序:
classPerson{
privateStringname;//姓名
privateStringsex;//性别
publicPerson(Stringx,Stringy){
this.name=x;
this.sex=y;
}
publicvoidsetStatus(Stringx,Stringy){
this.name=x;
this.sex=y;
}
publicStringtoString(){
returnname+sex;
}
//-----互换一般对象-----
publicstaticvoidchangeref(Persontmpx,Persontmpy){
//互换tmpx和tmpy对象
Personswapref=tmpx;
tmpx=tmpy;
tmpy=swapref;
//System.out.println("在办法中互换的了局:refa="+tmpx.toString());
//System.out.println("在办法中互换的了局:refb="+tmpy.toString());
}
//-----互换数组对象-----
publicstaticvoidchangeArrayRef(Person[]x,Person[]y){
//互换数组对象
Personswaparrayref=x[x.length-1];
x[x.length-1]=y[x.length-1];
y[x.length-1]=swaparrayref;
}
//-----互换数组-----
publicstaticvoidchangeArray(int[]x,int[]y){
int[]tmp=x;
x=y;
y=tmp;
}
}
publicclassDemo{
publicstaticvoidmain(String[]args){
//-------创建并机关两个对象---------
Personrefa=newPerson("张三","男");
Personrefb=newPerson("李四","男");
//互换refa对象和refb对象
Person.changeref(refa,refb);
//从互换了局中看出,实践对象并未互换
System.out.println("在主函数中互换的了局refa="+refa.toString());
System.out.println("在主函数中互换的了局refb="+refb.toString());
//-------创建两个对象数组----------
Person[]arraya=newPerson[1];
Person[]arrayb=newPerson[1];
//分离机关数组对象
arraya[0]=newPerson("王五","男");
arrayb[0]=newPerson("赵六","男");
/*数组对象为null时,不克不及设置其值,必需先机关它(即挪用机关函数),再用别的办法设置其值
*/
System.out.println(’
’+"数组对象互换前的了局arraya="+arraya[0].toString());
System.out.println("数组对象互换前的了局arrayb="+arrayb[0].toString());
//互换这两个数组对象
Person.changeArrayRef(arraya,arrayb);
System.out.println("-互换后的了局arraya="+arraya[0].toString());
System.out.println("-互换后的了局arrayb="+arrayb[0].toString());
//-------创建两个一般数组---------
int[]a=newint[2];
int[]b=newint[2];
//给数组个元素赋值
for(inti=0;i<a.length;i++){
a[i]=i;
b[i]=i+1;
}
System.out.println(’
’+"数组互换前inta[0]="+a[0]);
System.out.println("数组互换前intb[0]="+b[0]);
//互换数组
Person.changeArray(a,b);
System.out.println("-互换后的了局inta[0]="+a[0]);
System.out.println("-互换后的了局intb[0]="+b[0]);
}
}
从程序实行的了局来看:在互换两个对象时,仅仅改动了对象句柄的指向,而没有改动对象内容,因而办法参数为对象时,其实不互换实践内容,而是互换了拷贝内容。
数组对象有点奇异,在形参中互换了,实参也反响出来。
数组和一般数据范例一样,形参的改动,不会反响到实参中来。
对象也一样,形参改动了,实参一样不会反响出来。
小结一下:
1、办法能够修正对象参数的形态
2、办法不克不及让对象参数指向新的对象
3、办法不克不及修正基础范例(int、byte等)的参数
java比较简单,没有C++的烦琐,但学习时最好有C++为基础.与JSP和SQL起应用,功能强大. |
|