我們知道,Java是面向對象的編程語言,但是,Java裏面提供的 8 種基本數據類型是不支持面向對象的編程機制,因爲沒有屬性和方法。在Java中,很多類的方法都需要接收引用類型的對象,此時就無法將一個基本數據類型的值傳入。所以,JDK 中提供了包裝類,通過包裝類可以將基本數據類型的值包裝爲引用數據類型的對象。
基本數據類型對應的包裝類
byte --> Byte
char --> Character
int --> Integer
short --> Short
long --> Long
float --> Float
double --> Double
boolean --> Boolean
除了Integer和Character類外,其他對應的包裝類的名稱都與其基本數據類型類似,只是首字母要大寫
包裝類和基本數據類型在轉換時,有自動裝箱(Autoboxing) 和自動拆箱(AutoUnboxing) 的概念
- 自動裝箱是將基本數據類型的變量賦給對應的包裝類變量
- 自動拆箱是將包裝類對象類型直接賦給一個對應的基本數據類型變量
package com.wang.demo;
public class Demo1 {
public static void main(String[] args) {
//定義一個基本類型,變量名 a 賦值爲 8
int a = 8;
//自動裝箱:將基本數據類型的變量 a賦值給 Integer類型的變量 b
Integer b = a;
System.out.println(b);
//自動拆箱:將 Integer類型的變量 b賦給基本類型的變量 a
int c = b;
System.out.println(c);
}
}
Java中,還提供了其他方法支持基本數據類型,基本數據包裝類以及字符串之間的相互轉換。具體如下:
1.通過引用數據類型字符串String類的valueOf()方法可以將8種基本數據類型轉換爲對應的字符串類型
2.通過8種包裝類的靜態方法valueOf()既可以將對應的基本數據類型轉換爲包裝類,也可以將變量內容匹配的字符串轉 換爲對應的包裝類(Character包裝類除外)
3.通過8種包裝類的有參構造方法同樣既可以將對應的基本數據類型轉換爲包裝類,也可以將變量內容匹配的字符串轉 換爲對應的包裝類(Character包裝類除外)
4.通過8種包裝類的靜態方法parseXxx()可以將變量內容匹配的字符串轉換爲對應的基本數據類型
5.包裝類都重寫了Object類中的toString()方法,以字符串的形式返回被包裝的基本數據類型的值
package com.wang.demo;
public class Demo2 {
public static void main(String[] args) {
int num = 666;
String str = "999";
//1.通過String.valueOf()方法將基本數據類型轉換成字符串
String string1 = String.valueOf(num);
System.out.println("將int變量轉換爲字符串:" + string1);
//2.通過包裝類的 valueOf()靜態方法將基本類型和字符串轉換爲包裝類
Integer integer1 = Integer.valueOf(num);
Integer integer2 = Integer.valueOf(str);
System.out.println("將int變量轉換爲包裝類:" + integer1);
System.out.println("將字符串變量轉換爲包裝類:" + integer2);
//3.通過包裝類的有參構造方法將基本類型和字符串轉換爲包裝類
Integer integer3 = new Integer(num);
Integer integer4 = new Integer(str);
System.out.println("通過構造器將int變量轉換成包裝類:" + integer3);
System.out.println("通過構造器將字符串變量轉換成包裝類" + integer4);
//4.通過包裝類的 parseXxx()靜態方法將字符串轉換成基本數據類型
int parseInt = Integer.parseInt(str);
System.out.println("將字符串轉換成基本類型:" + parseInt);
//5.通過包裝類的 toString()方法將包裝類轉換成字符串
String string2 = integer1.toString();
System.out.println("將包裝類轉換成字符串:" + string2);
}
}
-------------------------------------------------------------------------------
結果:
將int變量轉換爲字符串:666
將int變量轉換爲包裝類:666
將字符串變量轉換爲包裝類:999
通過構造器將int變量轉換成包裝類:666
通過構造器將字符串變量轉換成包裝類999
將字符串轉換成基本類型:999
將包裝類轉換成字符串:666
在使用 valueOf(String s) 和 parseXxx(String s) 方法時,注意以下幾點:
-
除 Character外,包裝類都有 valueOf(String s) 方法,可以根據 String 類型的參數創建包裝類對象,但參數字符串 s 不能爲 null,而且字符串必須是可以解析爲相應基本類型的數據,否則雖說編譯可以通過,但運行時會報錯。
Integer i = Integer.valueOf("123"); //合法 Integer i = Integer.valueOf("12ab"); //不合法
-
除 Character外,包裝類都有 parseXxx(String s) 的靜態方法,將字符串轉換成相應的基本類型的數據。參數 s 不能爲 null,而且字符串必須是可以解析爲相應基本類型的數據,否則雖說編譯可以通過,但運行時會報錯。
int i = Integer.parseInt("123"); //合法 Integer integer = Integer.oarseInt("it"); //不合法