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] + " ");
}
}
可以任意1请解释为什么代码的输出是1,2,3,4,5。 .................................................. .................................................. .................................................. .................................................. ............
答案 0 :(得分:2)
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;
}
答案 1 :(得分:2)
在Java中,对象引用按值传递。当你这样做时
static void doIt(int[] z) {
z = null;
}
您将对象引用z
的值设置为null
。此时,您的doIt
方法无法再从myArray
方法引用main
局部变量,但数组保持不变,以及myArray
变量,它。
答案 2 :(得分:1)
因为在java 中,对象的引用是按值传递的。
因此TestIt.doIt(myArray);
只会在myArray
方法中将null
的值更改为doIt()
。
如果您希望在调用方法中更改该值,请使用:
myArray = TestIt.doIt(myArray);