参照をコピーしたとき
出力はどれか。
public class Main {
public static void main(String[] args) {
Box a = new Box();
Box b = a;
b.value = 5;
System.out.println(a.value + " " + (a == b));
}
}
class Box {
int value;
}
- A
5 true - B
0 false - C
5 false - D
0 true
正解と解説を見る
正解: A
- A: b は a と同じオブジェクトを指すので、b.value = 5 は a から見ても 5、
a == bも true です。 - B:
Box b = a;はオブジェクトをコピーせず、同じオブジェクトを指します。 - C: a と b は同じオブジェクトを指しているので、
==は true です。 - D: 同じオブジェクトなので、b から変えた 5 が a からも見えます。
ポイント
Box b = a;はオブジェクトをコピーせず、同じオブジェクトを指す参照をコピーします。
「Java クラスの定義とインスタンス化とオブジェクトのライフサイクル」をこのサイトで解く (記録・間違えた問題の解き直し・AI教師への質問)