其实传递的就是数组的指针,里面的每一项的值还是那块内存,所以能直接操作里面的值。如果单纯传指定的值,那么里面操作的就是新的一块内存块。
用数组实现的效果如下:
class B{ String cnt=null; public static void main(String[] args) { B t=new B();//实例化一个对象 String a=null; String[]s=new String[1]; B b=new B(); Object o=null; t.test1(a); System.out.println("原子类型实现的结果:"+a);//原子类型实现的结果:null t.test2(b); System.out.println("引用类型实现的结果:"+b.cnt);//引用类型实现的结果:bbbbbb t.test3(s); System.out.println("数组类型实现的结果:"+s[0]);//数组类型实现的结果:sssssssss t.test4(o); System.out.println("数组类型实现的结果:"+String.valueOf(o));//数组类型实现的结果:null } public void test1(String a){ a="aaaaaaaa"; } public void test2(B b){ b.cnt="bbbbbb"; } public void test3(String[] s){ s[0]="sssssssss"; } public void test4(Object o){ o="sssssssss"; } }
参考:
http://blog.csdn.net/hemeinvyiqiluoben/article/details/49978313