gpt4 book ai didi

java - 传递对象引用,未获得预期结果。

转载 作者:行者123 更新时间:2023-11-29 05:56:05 25 4
gpt4 key购买 nike

将对象引用传递给静态方法 m1() 为什么它不会变为 null 以及为什么最后一条语句不会出错。输出为 X

 class I {
private String name;
public String name() {
return name;
}
public I (String s) {
name = s;
}
}

class J {
public static void m1 (I i){
i = null;
}
public static void main (String[] arg)
{
I i = new I("X");
m1(i);
System.out.print(i.name());
}
}

最佳答案

Java 是按值传递的,因此 i 的范围仅限于 m1()

public static void m1 (I i){ // i is copied from i which is in main method but it is another variable whose scope lies within m1() only

i = null; // original i in main lies in main() method scope

}

如果您在方法 m1() 中更改 i 的名称,混淆将减少,例如:

public static void m1 (I iObj){ 
iObj = null; // i in main() method still points to Object

}

关于java - 传递对象引用,未获得预期结果。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12079318/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com