为什么不通过引用工作?

时间:2013-03-13 00:17:18

标签: java reference

我知道一切都是通过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);
    }
}

2 个答案:

答案 0 :(得分:1)

main函数中,str只存储对字符串的引用。执行str = "hate"时,引用会更改,但原始对象"love"已存储在s.str中并保留在那里。

有关详细说明,请参阅this

答案 1 :(得分:1)

使用str = "Hate",您只需将本地str引用更改为“仇恨”; s.str仍然指的是“爱”,所以这就是印刷品。