Integer 型別的整數200與Integer 型別的整數200比較結果為false
阿新 • • 發佈:2021-02-14
技術標籤:java
Integer 型別的整數200與Integer 型別的整數200比較結果為false,但是Integer 型別的整數100與Integer 型別的整數100比較結果為true
程式如下:
public class IntegerComparison {
/**
* Integer 快取是 Java 5 中引入的一個有助於節省記憶體、提高效能的特性。
* Integer中有個靜態內部類IntegerCache,裡面有個cache[],也就是Integer常量池,常量池的大小為一個位元組(-128~127)。
* 這種 Integer 快取策略僅在自動裝箱的時候有用,使用構造器建立的 Integer 物件不能被快取。
*/
public static void main(String[] args) {
Integer a=100;
Integer b=100;
Integer c=200;
Integer d=200;
System.out.println(a==b);//true
System.out.println(c==d);//false
}
}
結果如下:
原因是:
Integer 快取是 Java 5 中引入的一個有助於節省記憶體、提高效能的特性。Integer中有個靜態內部類IntegerCache,裡面有個cache[],也就是Integer常量池,常量池的大小為一個位元組(-128~127)。 這種 Integer 快取策略僅在自動裝箱的時候有用,使用構造器建立的 Integer 物件不能被快取。