package basic;
class TestIt {
static void doIt(int[] z) {
z = null;
}
}
class Arraydemo {
public static void main(String[] args) {
int[] myArray = { 1, 2, 3, 4, 5 };
TestIt.doIt(myArray);
for (int j = 0; j < myArray.length; j++)
System.out.print(myArray[j] + " ");
}
}any1可以解释为什么代码的输出是1,2,3,4,5. ....................................................................................................................................................................................................................
发布于 2015-01-12 21:40:46
Java是pass by value,这意味着当您分配z = null时,它不会更改myArray。
要将myArray设置为null,必须在main中显式设置它
class Arraydemo {
public static void main(String[] args) {
int[] myArray = { 1, 2, 3, 4, 5 };
myArray = null;
}发布于 2015-01-12 21:41:02
在Java中,对象引用是通过值传递的。当你这样做的时候
static void doIt(int[] z) {
z = null;
}将object reference z的值设置为null。此时,您的doIt方法不能再从main方法中引用myArray局部变量,但数组以及引用它的myArray变量保持不变。
发布于 2015-01-12 21:41:16
因为在java中,对对象的引用是通过值传递的。因此,TestIt.doIt(myArray);只会在doIt()方法中将myArray的值更改为null。
如果您希望在调用方法中也更改该值,请使用:
myArray = TestIt.doIt(myArray);
https://stackoverflow.com/questions/27903293
复制相似问题