<转>Java参数传递形式

<转>Java参数传递方式

1、对于原始数据类型,也就是int、 long、char之类的类型,是传值的,如果你在方法中修改了值,方法调用结束后,那个变量的值没有改变。 
2、对于对象类型,也就是Object的子类,如果你在方法中修改了它的成员的值,那个修改是生效的,方法调用结束后,它的成员是新的值,但
是如果你把它指向一个其它的对象,方法调用结束后,原来对它的引用并没用指向新的对象。 
代码如下:

java 代码
  1. public class Tester {    
  2.     public static void main(String[] args) {    
  3.         int primitive = 2;    
  4.         changePrimitive(primitive);    
  5.         //primitive的值依然是2    
  6.         MyClass myClass = new MyClass();    
  7.         changeObject(myClass);    
  8.         //myClass仍然指向的是执行changeObject之前的那个对象    
  9.         //但是myClass.i等于3了    
  10.     }    
  11.   
  12.     public static void changePrimitive(int primitive) {    
  13.         primitive = 3;    
  14.     }    
  15.   
  16.     public static void changeObject(MyClass myClass) {    
  17.         myClass.i = 3;    
  18.         myClass = new MyClass();    
  19.     }    
  20. }    
  21.   
  22. class MyClass {    
  23.     int i;    
  24. }   

 


另一个解释
1、基本类型作为参数传递时,是传递值的拷贝,无论你怎么改变这个拷贝,原值是不会改变的
2、在Java中对象作为参数传递时,是把对象在内存中的地址拷贝了一份传给了参数。

 

转自http://yousking.iteye.com/blog/65164