读书人

步骤实参传递的疑惑!

发布时间: 2012-10-24 14:15:58 作者: rapoo

方法实参传递的疑惑!!

   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句,我再看这试验代码,完全晕了~
1 楼 zhangthe9 2009-01-20 所有都是值传递
传对象进去是 引用值传递
操作的是引用的对象

传值进去,操作的是值副本



结果绝对正确啊
2 楼 leeldy 2009-02-04 基本类型boolean,char,byte,short,int,long,float,double都是值传递
其他都是引用传递

读书人网 >其他相关

热点推荐