论坛首页 入门技术论坛

方法实参传递的疑惑!!

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

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



结果绝对正确啊
0 请登录后投票
   发表时间:2009-02-04  
基本类型boolean,char,byte,short,int,long,float,double都是值传递
其他都是引用传递
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics