11、自動拆箱和裝箱
阿新 • • 發佈:2018-12-15
什麼是自動拆箱和自動裝箱?
//自動裝箱:把基本型別轉換為包裝類型別 Integer s1 = 123; //自動拆箱:把包裝類型別轉換為基本型別 Integer s2 = new Integer(10); int i2 = s2;
以上特性是jdk5中加入的,也就是說在jdk5版本之前是不支援自動裝箱和自動拆箱的。
注意:在判斷兩個Integer型別是否相等時,要使用equals方法,不能使用"==",Integer已經重寫了Object中的equals方法。
Integer s2 = 888; Integer s3= 888; System.out.println(s2 == s3); //false Integer s2 = 888; 相當於 Integer s2 = new Ingeter(888);s2和s3地址不一樣 System.out.println(s2.equals(s3)); //true 。equals比較的是值, == 比較的是地址
整型常量池
如果資料是在(-128~127)之間,java中在方法區中引入了一個“整型常量池”。
下面程式列印的結果
Integer s4 = 127; Integer s5= 127; System.out.println(s4 == s5); //true System.out.println(s4.equals(s5)); //true
上面程式不會在堆中建立物件,會直接從整型常量池中拿。
比較Integer的值是否相等時,一定要使用equals方法