java的裝箱和拆箱

包裝類:基本數據類型對應的一個類算法

1.爲啥要用包裝類:1 基本數據類型屬於值引用類型,2 基本類型不能面向對象編程 3 若是不使用包裝類,咱們若是將一個字符串數字轉換爲某種類型的數字,就很麻煩。編程

2 裝箱和拆箱緩存

裝箱:將基本數據類型的數據轉爲包裝類型的數數據 拆箱:將包裝類型的數據轉爲基本類型的數據 自動裝箱和自動拆箱:jvm提供了一種算法來作這個事情jvm

4 裝箱的三種方式code

Integer a=new Integer(8);

Integer b=8;

Integer c=Integer.valueOf(8);

5 拆箱的方式對象

int d=a.intValue();

int e=a;

6 常出錯的知識點字符串

Integer a=new Integer(10);源碼

Integer b=new Integer(10);
		
        System.out.println(a==b);//false
		
        System.out.println(a.equals(b));//true

        Integer c=Integer.valueOf(10);
        Integer d=Integer.valueOf(10);
        System.out.println(c==d);//true ?爲啥呢
        System.out.println(c.equals(d));//ture

        Integer e=Integer.valueOf(128);
        Integer f=Integer.valueOf(128);
        System.out.println(e==f); //false ?注意
        System.out.println(e.equals(f));//true

        Integer g=Integer.valueOf(-129);
        Integer h=Integer.valueOf(-129);
        System.out.println(g==h);//false  //注意
        System.out.println(g.equals(h));//true

        注意上面的?下面咱們來看下valueOf()方法的實現
		public static Integer valueOf(int i) {
             if (i >= IntegerCache.low && i <= IntegerCache.high)
                 return IntegerCache.cache[i + (-IntegerCache.low)];
               return new Integer(i);
            }
			
		分析:經過源碼可知low=-128 high=127(本身進去查看),當-128=<i<=127是從緩存中取的數據,那麼地址就是相同的,因此是true
		
		反之則是返回new Integer(i),表明建立了一個對象,那麼地址天然不一樣,false。
相關文章
相關標籤/搜索