包裝類:基本數據類型對應的一個類算法
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。