0

我知道一切都是在java中通过引用传递的。但为什么它在这种情况下不起作用?我原以为它应该打印出“Hate”而不是“Love”。

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);
    }
}
4

2 回答 2

1

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

请参阅以获得更多说明。

于 2013-03-13T00:19:21.667 回答
1

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

于 2013-03-13T00:20:00.383 回答