Java如何在方法中操作数组元素
一、对比两组ChangeIt代码的不同
class TestIt
{public static void main ( String[] args ){int[] myArray = {1, 2, 3, 4, 5};ChangeIt.doIt( myArray );for(int j=0; j<myArray.length; j++)System.out.print( myArray[j] + " " );}
}
class ChangeIt
{static void doIt( int[] z ) {z = null ;}
}
class TestIt
{public static void main ( String[] args ){int[] myArray = {1, 2, 3, 4, 5};ChangeIt.doIt( myArray );for(int j=0; j<myArray.length; j++)System.out.print( myArray[j] + " " );}
}
class ChangeIt {static void doIt(int[] z) {z[0] = 10; // 修改数组的第一个元素}
}
一、什么是引用调用
-
引用与值:
在 Java 中,数组是对象,变量存储的是对该对象的引用。当你将数组传递给方法时,实际上是传递了该数组的引用。 -
局部变量的作用域:
当在doIt
方法中执行z = null;
时,只有局部变量z
的引用被更改,使其指向null
。这并不会影响到外部的myArray
变量,因为它仍然持有原始数组的引用。 -
原始数组保持不变:
因为myArray
在main
方法中依然引用着同一个数组对象,所以即使在doIt
方法中将z
设置为null
,原始数组的内容依旧保持不变。
二、在方法中修改数组的值
-
数组是对象:
在 Java 中,数组是对象。当你创建一个数组时,例如int[] myArray = {1, 2, 3, 4, 5};
,myArray
变量持有的是对这个数组对象的引用。 -
传递数组:
当你将myArray
作为参数传递给doIt
方法时,实际上是把这个数组的引用传递给了z
。因此,z
和myArray
指向同一个数组对象。 -
修改数组内容:
在doIt
方法中,当你执行z[0] = 10;
时,你并没有改变z
的引用,而是直接访问并修改了数组中的第一个元素。这会影响到原始数组,因为z
和myArray
共享同一个数组对象。 -
方法调用后的结果:
当doIt(myArray);
被调用后,myArray
的第一个元素被设置为10
,所以在调用后,myArray
的内容变为{10, 2, 3, 4, 5}
。