<转>Java参数传递形式
转Java参数传递方式1、对于原始数据类型,也就是int、 long、char之类的类型,是传值的,如果你在方法中修改了
<转>Java参数传递方式
1、对于原始数据类型,也就是int、 long、char之类的类型,是传值的,如果你在方法中修改了值,方法调用结束后,那个变量的值没有改变。?
2、对于对象类型,也就是Object的子类,如果你在方法中修改了它的成员的值,那个修改是生效的,方法调用结束后,它的成员是新的值,但是如果你把它指向一个其它的对象,方法调用结束后,原来对它的引用并没用指向新的对象。?
代码如下:
public?class?Tester?{? ??????public?static?void?main(String[]?args)?{? ??????????int?primitive?=?2;? ??????????changePrimitive(primitive);? ??????????//primitive的值依然是2????????????MyClass?myClass?=?new?MyClass();? ??????????changeObject(myClass);? ??????????//myClass仍然指向的是执行changeObject之前的那个对象????????????//但是myClass.i等于3了????????}? ????????public?static?void?changePrimitive(int?primitive)?{? ??????????primitive?=?3;? ??????}? ????????public?static?void?changeObject(MyClass?myClass)?{? ??????????myClass.i?=?3;? ??????????myClass?=?new?MyClass();? ??????}? ??}? ????class?MyClass?{? ??????int?i;? ??}????
另一个解释
1、基本类型作为参数传递时,是传递值的拷贝,无论你怎么改变这个拷贝,原值是不会改变的
2、在Java中对象作为参数传递时,是把对象在内存中的地址拷贝了一份传给了参数。
?
转自http://yousking.iteye.com/blog/65164
?