浏览 1992 次
锁定老帖子 主题:数组的值是怎么传递的?
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2008-03-20
public class Test { public static void main(String args[]){ String str = "String"; int [] arr = {1,2}; Test2 t2 = new Test2(); t2.fun(str); t2.fun2(arr); System.out.println(str); System.out.println(arr[0]); System.out.println(arr[1]); } } class Test2 { public void fun(String str){ str = "3333333"; } public void fun2(int[] arr){ arr[0]=100; arr[1]=200; } } 输出结果: String 100 200 为什么只是调用了test2方法确使得数组的值发生了变化,String却没有变呢? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-03-20
String str = "String";这个"String"是在串池中,是个常量。而数组是NEW出来的 在堆空间。 对象的传递是按引用传递,也就是C中的传地址,因此会改变内存的值,而String是个常量 所以不能改变 你fun方法里只是改变引用的指向 去指向另外一个串池中"333333"的常量而已,对main方法里的引用不起任何作用。这里还有个概念就是实参和形参的问题,很基础的一个问题,也是新手比较容易迷惑的问题。
|
|
返回顶楼 | |
发表时间:2008-03-20
数组传的是对象的引用,是数组在内存中的地址
|
|
返回顶楼 | |