1、概述java
JAVA中一共有8種數據類型,分別是byte short int long boolean float double char,與此相對應的,有8個類與它們分別對應:ide
byte Bytespa
short Shortcode
int Integerorm
long Long對象
boolean Booleanblog
float Float字符串
double Doubleget
char Characterit
將基本數據類型封裝成對象有什麼好處?
基本數據類型包裝類中封裝了不少屬性和方法,使得對數據的操做更加方便和靈活。
舉例說明:
想要得到int類型所能表示的最大值,只須要使用靜態屬性:Integer.MAX_VALUE便可。
想要將十進制數轉換成二進制數,只須要調用靜態方法:Integer.toBinaryString()方法便可。
2、基本數據類型和字符串之間的相互轉換。
1.基本數據類型轉換成字符串。
方法:
1.1基本數據類型+「」
1.2使用String類的靜態方法valueOf
1.3使用基本數據類型包裝類的非靜態方法valueOf
2.字符串轉換成基本數據類型。
方法:
2.1使用parseXXX方法。
用法示例:int x=Integer.parseInt("123");
注意,該方法中的參數字符串必須合法,不然會拋出運行時異常NumberFormatException。
此外,還有Long.parseLong、Double.parseDouble、Float.parseFloat、Boolean.parseBoolean、Byte.parseByte、Short.parseShort方法,可是應當注意,Character類中並無相似的方法,緣由是顯而易見的,一個字符串長度一旦超過1,該方法就沒有意義了。
2.2使用構造方法建立新對象。
例如:Integer x=new Integer("123");
其它基本數據類型包裝類用法相似。可是仍然要注意Character類的構造方法。
3、十進制數和其它進制數之間的轉換。
1.十進制數轉換成其它進制數。
1.1使用三個經常使用方法。
public static String toBinaryString(int i); 該方法將十進制數轉換成二進制數的補碼錶示形式。
public static String toHexString(int i); 該方法將十進制數轉換成十六進制數。
public static String toOctalString(int i); 該方法將十進制數轉換成八進制數。
1.2使用toString方法。
public static String toString(int i,int radix);該方法能將十進制數轉換成任意進制數,前提是基數小於 或者大於 Character.MIN_RADIXCharacter.MAX_RADIX。
用法示例:String str=Integer.toString(12,2); 將十進制數12轉換成2進制數並返回二進制數的字符串表示形式。
2其它進制數轉換成十進制數。
使用parseInt方法。
public static int parseInt(String s,int radix)throws NumberFormatException;
該方法可以將字串x視爲radix進制數,並將該數轉換爲十進制數。
若是轉換失敗,則拋出NumberFormatException異常。
4、自動裝箱、拆箱操做。
若是基本數據類型已經封裝成了對象,該怎麼獲取該基本數據類型的值?
使用方法:intValue();(針對Integer類)其它方法的使用相似。
Double.doubleValue()、 Float.floatValue() 、Boolean.booleanValue()、Byte.byteValue()、 Character.characterValue ()、 Long.longValue()、
Short.shortValue()
例1:自動裝箱示例。
1 public class Demo 2 { 3 public static void main(String args[]) 4 { 5 Demo1(); 6 } 7 public static void Demo1() 8 { 9 Integer i=new Integer(123); 10 Integer j=123; 11 System.out.println(i==j); 12 System.out.println(i.equals(j)); 13 System.out.println(i.compareTo(j)); 14 } 15 }
運行結果:
false
true
0
自動裝箱是基本數據類型自動封裝成基本數據類型包裝對象的過程。
equals方法在基本數據類型包裝類中比較的是對象中基本數據類型值是否相同。
例2:關於特殊值127
1 public class Demo 2 { 3 public static void main(String args[]) 4 { 5 //Demo1(); 6 Demo2(); 7 } 8 public static void Demo2() 9 { 10 for(int i=1;i<=200;i++) 11 { 12 Integer x=i; 13 Integer y=i; 14 System.out.println(i+":"+(x==y)); 15 } 16 } 17 public static void Demo1() 18 { 19 Integer i=new Integer(123); 20 Integer j=123; 21 System.out.println(i==j); 22 System.out.println(i.equals(j)); 23 System.out.println(i.compareTo(j)); 24 } 25 }
觀察127行,在這一行以前的結果都是true,在這一行以後的結果都是false,這是有緣由的。
JDK1.5不只作出了自動裝箱和自動拆箱的規定,並且還針對整數的大小作出了是否開闢出新的空間存儲對象的規定:
若是自動裝箱的是一個字節,那麼該數據會被共享,而不會從新開闢空間。
5、判斷拆箱操做仍是裝箱操做。
1 public class Demo 2 { 3 public static void main(String args[]) 4 { 5 //Demo1(); 6 //Demo2(); 7 Demo3(); 8 } 9 public static void Demo3() 10 { 11 Integer i=1; 12 i=i+1; 13 System.out.println(i); 14 } 15 public static void Demo2() 16 { 17 for(int i=1;i<=200;i++) 18 { 19 Integer x=i; 20 Integer y=i; 21 System.out.println(i+":"+(x==y)); 22 } 23 } 24 public static void Demo1() 25 { 26 Integer i=new Integer(123); 27 Integer j=123; 28 System.out.println(i==j); 29 System.out.println(i.equals(j)); 30 System.out.println(i.compareTo(j)); 31 } 32 }
運行結果:2
最關鍵的一句就是i=i+1;這個操做。
這其中包含着自動拆箱和自動裝箱的操做。
分析:i+1,咱們知道JAVA中的運算必須是同一種類型數據之間的運算。在這裏,一個基本數據類型1,還有一個是基本數據類型包裝類的對象,那麼他們之間的運算是怎麼回事兒呢?首先,JAVA中的運算只能是基本數據類型之間的運算,因此,在這裏,基本數據類型包裝類的對象會調用intValue方法,返回一個整數,在這裏,這個整數是1,而後1+1得出結果2,可是2是基本數據類型,因此若是要賦值給i,還須要有一個自動裝箱的操做。