在JDK1.5之後,Integer添加了自動裝箱,其形式為Integer i = 5;
裝箱過程在內存中是 i = new Integer(4);大家都很熟悉這個吧。
當使用這中形式的時候,equals的用法不變,但是“==”略有不同
看下邊的例子:
(1)
Integer x = 12;
Integer y = 12;
System.out.println(x==y); //true
System.out.println(x.equals(y)); //true
(2)
Integer x = 127;
Integer y = 127;
System.out.println(x==y); //true
System.out.println(x.equals(y)); //true
結果和(1)相同
(3)
Integer x = 128;
Integer y = 128;
System.out.println(x==y); //false
System.out.println(x.equals(y)); //true
(4)
Integer x = 129;
Integer y = 129;
System.out.println(x==y); //false
System.out.println(x.equals(y)); //true
結果和(3)相同
總結:看到equals的用法和在上一篇博文中敘述的相同
但是“==”的用法變了,這是因為,自動裝箱,如果裝箱的是一個字節方位內的數據(注意上邊的127),那麼這個數據會被共享,不會開辟新的空間,
所以兩個new的地址相同。