0

私はすべてが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);
    }
}
4

2 に答える 2

1

main関数では、str文字列への参照を格納するだけです。を実行するstr = "hate"と、参照は変更されますが、元のオブジェクト"love"はに保存されs.str、そこに残ります。

詳細については、これを参照してください。

于 2013-03-13T00:19:21.667 に答える
1

ではstr = "Hate"、ローカルstr参照を「Hate」に変更しただけです。s.strまだ「愛」を指しているので、それが印刷されています.

于 2013-03-13T00:20:00.383 に答える