浏览 1906 次
锁定老帖子 主题:方法实参传递的疑惑!!
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-06-15
最后修改:2008-11-20
public class PassArray { public static void main(String[] args) { int array[]={1,2,3,4,5}; for(int value:array){ System.out.print(value); } System.out.println("改变后的数组"); modify(array); for(int value:array){ System.out.print(value); } System.out.println("现在改变元素"); modify(array[3]); System.out.println("再次打印数组,看第3个元素是什么"); for(int value:array){ System.out.print(value); } } private static void modify(int i) { System.out.println("第3个元素修改后是:"); i*=3; System.out.println(i); } private static void modify(int[] array) { for(int counter=0;counter<array.length;counter++){ array[counter]*=2; } } } 第一次方法调用modify(int[] array)是传的一个数组的引用,结果形参,实参指向了同一个引用,再回到main方法时,数组已经改成了{2,4,6,8,10}, 第2次方法调用modify(int i) 是传递了一个基本类型,一个数组元素,第3个元素,再回到MAIN方法时,这个元素仍然没有变化。 书上有2句话:1.当方法修改基本类型参数时,它对调用时采用的变量没有影响 2.对于引用类型的型参也是如此,如果讲另一个对象的引用赋给引用类型的型参,则型参指向新对象,但调用时的变量仍指向原来的对象。 看完这2句,我再看这试验代码,完全晕了~ 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-01-20
所有都是值传递
传对象进去是 引用值传递 操作的是引用的对象 传值进去,操作的是值副本 结果绝对正确啊 |
|
返回顶楼 | |
发表时间:2009-02-04
基本类型boolean,char,byte,short,int,long,float,double都是值传递
其他都是引用传递 |
|
返回顶楼 | |