1

これら 2 つのステートメントの出力はどうなるでしょうか。これがどのように機能するのか理解できません。番号 1 については、b = 33 と言うでしょう。これは、a=a+1 と言っているので、a = 33 です。b は a に等しいので、b も 33 でなければなりませんか? 2 つ目は、b = デルマーです。ちょっと混乱しています。助けていただければ幸いです。ありがとうございます。

1:

int a;
int b;
a = 32;
b = a;
a = a + 1;
System.out.println(b);

2:

Person a;
Person b;
a = new Person("Everett");
b = a;
a.changeName("Delmar");
System.out.println(b.getName());
4

3 に答える 3

2

最初のステートメントの出力は 32 です。これは、b がオブジェクトではないためです。したがって、int 変数はオブジェクトへのポインターを表していません。実際の値を表します。

2 番目のステートメントは "Delmar" を出力します。これは、B と A が実際には同じオブジェクトを指しており、a の値を変更すると、b の値も暗黙的に変更されるためです。

于 2013-03-02T10:35:24.160 に答える
1

最初のものでは、の値がab にコピーされます。したがって、a後の変更は影響しませんb

2 番目の両方で、同じオブジェクトaを参照します。bでの変更はaに反映されbます。

したがって、出力は32次のようになります。最初のケースとDelmar2番目のケース。

于 2013-03-02T10:36:22.610 に答える
0

追加後のプレメティブの場合、新しいオブジェクトが作成されます。したがって、b は 32 に等しい古い a を指します。

ただし、非事前の Person クラスの場合、 a と b の両方が同じオブジェクトを指しているため、オブジェクトへの変更は両方の参照変数に反映されます。

于 2013-03-02T10:38:11.677 に答える