我知道一切都是通过java中的引用传递的。但是为什么它不适用于这种情况呢?我以为它应该打印出“讨厌”而不是“爱”。
class Test {
static class Str {
public String str;
public void set(String str) {
this.str = str;
}
}
public static void main(String[] args) {
Str s = new Str();
String str = "Love";
s.set(str);
str = "Hate";
System.out.println(s.str);
}
}
答案 0 :(得分:1)
在main
函数中,str
只存储对字符串的引用。执行str = "hate"
时,引用会更改,但原始对象"love"
已存储在s.str
中并保留在那里。
有关详细说明,请参阅this。
答案 1 :(得分:1)
使用str = "Hate"
,您只需将本地str
引用更改为“仇恨”; s.str
仍然指的是“爱”,所以这就是印刷品。