84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
能不能详细解释下为什么最后y会随着x的变化而变化
Point x = new Point(0,0); Point y = new Point(1,1); x = y; x.setLocation(5,5); System.out.println("x is :"+x); System.out.println("y is :"+y);
程序运行结果:
x is java.awt.Point[x=5, y=5] y is java.awt.Point[x=5, y=5]
欢迎选择我的课程,让我们一起见证您的进步~~
x 変数と y 変数はスタック内に存在し、ヒープ内の 2 つのオブジェクト、それぞれ new Point(0,0) と new Point(1,1) を指します。x = y,x を実行してアドレスへの参照を指します。 y メモリ内の x .setLocation(5,5) は y を直接変更します。最終的に、x と y は両方ともヒープ内の y を指すため、出力されるのは x、x=5、y=5 の変更された内容です
つまり、引用したのはすべて y の空間アドレスです
x 変数と y 変数はスタック内に存在し、ヒープ内の 2 つのオブジェクト、それぞれ new Point(0,0) と new Point(1,1) を指します。x = y,x を実行してアドレスへの参照を指します。 y メモリ内の x .setLocation(5,5) は y を直接変更します。最終的に、x と y は両方ともヒープ内の y を指すため、出力されるのは x、x=5、y=5 の変更された内容です
Google 値渡しと参照渡し
考えるべき質問: 最終的な出力は何ですか?
リーリー リーリーつまり、引用したのはすべて y の空間アドレスです