数组值传递 错误笔记
在使用数组当参数时习惯性的认为吧元素传递进去就等于吧数组的应用传递进去了,这种想法是错误的,今天特意谢了段小测试程序验证一下
1 public class Test { 2 3 /** 4 * @param args 5 */ 6 public static void main(String[] args) { 7 int[] a = {1,2,3,4,5,6}; 8 9 Test t = new Test(); 10 t.change(a[5]); 11 for(int i=0;i<a.length;i++){ 12 System.out.print(a[i]); 13 } 14 System.out.println(); 15 System.out.println("==========================="); 16 t.change(a); 17 for(int i=0;i<a.length;i++){ 18 System.out.print(a[i]); 19 } 20 21 } 22 23 public void change(int[] a){ 24 a[0] = 9; 25 } 26 27 public void change(int a){ 28 a = 0; 29 } 30 31 }
实验结果:
声明了一个数组 int[] a = {1,2,3,4,5,6}; 下面谢了两个方法,一个验证传递数组元素,另一个验证传递数组引用
当调用change(int a)方法时传递进去a[5] ,发现执行方法后a[5]没有发生变化,说明档参数时数组中的某个元素时和传递一个普通的值没有区别
对数组本身没有影响
当调用chenge(int[] a)时,传递进去的是一个数组的引用,当执行方法后a[0] 位置的值变成了 9 说明当传递一个数组的引用进去时才会对数组的值产生影响。
实验结束,引以为鉴!