Javaの勉強をしていてIntegerクラスについて質問があります。
以下のコードにおいて
3つ目の出力でなぜfalseになるのでしょうか?
Java
1class Test { 2 public static void main(String[] args) { 3 Integer i1 = new Integer(10); 4 Integer i2 = i1; 5 System.out.print((i1 == i2) + " "); 6 System.out.print((i1++) + " "); 7 System.out.print(i1 == i2); 8 } 9} 10
変数i1がインクリメントされており、変数i1=11,変数i2は10となりfalseになっている。
という事実はわかるのですが、Integerクラスは参照型のため、参照渡しのように
変数i1がインクリメントされたタイミングで変数i2も値が更新されると思っていました。
以下のようにListであれば値が更新されます。
java
1 import java.util.ArrayList; 2 import java.util.List; 3 4 class Test { 5 public static void main(String[] args) { 6 List<Integer> i1 = new ArrayList<>(); 7 i1.add(10); 8 List<Integer> i2 = i1; 9 System.out.print((i1 == i2) + " "); 10 i1.add(5); 11 System.out.print(i1 == i2); 12 } 13 } 14
このIntegerクラスの参照渡しについて解説していただける方がいらっしゃれば教えていただきたいと思います。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/05/14 14:42
2017/05/14 14:51