本文結構
1.Character和char 的區別:
2.自動拆箱裝箱java
Character是類,char基本數據類型.數組
在java中有三個類負責對字符的操做:Character、String、StringBuffer。其中Character類是對單個字符進行操做,String是對一個字符序列的操做,StringBuffer是對一串字符進行操做。緩存
char能夠自動包裝成Character;Character也能夠自動拆包成char。jvm
java中默認基本類型的數據是分配在棧上,若是你想把它包裝成一個類的對象,讓它分配在堆上,就須要用到包裝類,Character就是char的包裝類。code
char能夠自動包裝成Character;Character也能夠自動拆包成char.對象
每一種基本數據類型,都對應了一個包裝類:繼承
byte——Byteclass
int——Integer變量
char——Character數據類型
。。。。。
這些包裝類final修飾不能被繼承。
每個包裝類對象,維護了一個對應的基本數據類型的值,且這個對象的值不會變,永遠對應。1——Integer(1)
//裝箱 int a=1; Integer integer=new Integer(a); //將基本數據類型的值封裝到其對應的包裝類對象中,叫作裝箱。 //拆箱 int i=integer.intValue();//注意integer同上,都爲定義的對象名 Sout輸出爲1 //從包裝類對象中,取出其所包裝的基本數據類型的值,叫作拆箱。 //自動裝箱 int a=1; Integer integer=a;//竟然把一個基本類型值賦值給了引用型變量,好矛盾,實際上jvm自動裝箱了。 //Integer integer=new Integer(a);jvm自動補齊了 //自動拆箱 int b=integer;//竟然把地址賦值給了基本類型的變量裏 //int b=integer.intValue();jvm自動補齊了 Integer integer1=1; Integer integer2=1; SOUT(integer1==integer2);//輸出的是true //不對呀兩個對象應該是兩個地址呀,這是由於對於數據範圍-128~127這個範圍的包裝類對象,作了緩存, //因此倆是一個對象 //注意:雖然有了自動裝箱和自動拆箱,但不是在全部的場景下基本數據類型的值與包裝類對象都等價 //第一個場景 int[] a=new int[100]; Integer[] b=a;//報錯,不行,站在整個數組的角度來看是錯誤的 a[0]=new Integer(100);//能夠,站在單個數組單元來看是能夠的 //第二個場景 //父類方法用int型 //子類方法用Integer報錯