Java 常量池注意點

public static void main(String[] args)指針

{
    Integer i0 = 0;
    Integer i1 = 40;
    Integer i2 = 40;
    System.out.println(i1==i2);//true Integer包裝類實現了常量池技術,默認會生成一個-128~127範圍的一個常量池,i1,i2都是從常量池獲取的40,指針指向同一個地址
    
    Integer i3 = new Integer(40);
    
    
    System.out.println(i1==i2+i0);//true  數學運算在棧中進行,運算時會進行拆箱操做,因此實際上比較的是基本數據類型40 == 40 + 0 的數值
    System.out.println(i1==i3+i0);//true  數學運算在棧中進行,運算時會進行拆箱操做,因此實際上比較的是基本數據類型40 == 40 + 0 的數值
    
    Integer i4 = new Integer(40);
    Integer i5 = new Integer(40);
    Integer i6 = new Integer(0);
    
    System.out.println(i4==i5+i6);//true  數學運算在棧中進行,運算時會進行拆箱操做,因此實際上比較的是基本數據類型40 == 40 + 0 的數值
    System.out.println(i4==i5);//false  引用類型,指向不一樣的地址
    

    Integer i7 = 1000;
    Integer i8 = 1000;
    System.out.println(i7==i8);//false  包裝類超出了常量池範圍
    
    System.out.println("===================");
    float f1 = 1.0f;
    float f2 = 1.0f;
    System.out.println(f1==f2);//true  基本數據類型浮點數比較數值
    
    Float f3 = 1.0f;
    Float f4 = 1.0f;
    System.out.println(f3==f4);//false  包裝類型,且Float沒有實現常量池,因此他們指向的引用時不一樣的
    
    Float f5 = 1.0f;
    Float f6 = 1.0f;
    Float f7 = 0.0f;
    System.out.println(f5==f6+f7);//true  基本類型的數學運算會拆包裝
}

>>>>閱讀全文code

相關文章
相關標籤/搜索