1. 程式人生 > 其它 >Integer 型別的整數200與Integer 型別的整數200比較結果為false

Integer 型別的整數200與Integer 型別的整數200比較結果為false

技術標籤: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 物件不能被快取。