方法实参传递的疑惑!!


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句,我再看这试验代码,完全晕了~
阅读更多

没有更多推荐了,返回首页