一,對應列舉
Java 中有 8 種基本數據類型,每種基本數據類型都有對應的包裝類,它們分別是:
二,包裝類的作用
1. 滿足面向對象編程需求
Java 是面向對象的編程語言,基本數據類型不是對象,無法使用面向對象的特性(如方法調用、繼承、多態等)。而包裝類是對象,可以像操作其他對象一樣操作它們。例如:
Integer num = 10;
// 可以調用包裝類提供的方法,獲取數字的二進制表示形式
String binaryString = num.toBinaryString(num);
System.out.println(binaryString);
?在上述代碼中,運用了int的包裝類的方法調用功能
2. 用于集合框架
Java 集合框架(如ArrayList
、HashMap
等)只能存儲對象。當需要將基本數據類型存儲到集合中時,就需要使用對應的包裝類。比如:
import java.util.ArrayList;
import java.util.List;public class WrapperExample {public static void main(String[] args) {List<Integer> integerList = new ArrayList<>();integerList.add(5); // 自動裝箱,實際是integerList.add(Integer.valueOf(5));integerList.add(10);System.out.println(integerList);}
}
關鍵點解釋:
List<Integer>
:這里聲明了一個只能存儲
Integer
對象的列表,不能直接存儲基本類型int
自動裝箱(Autoboxing):
integerList.add(5)
看起來像是在添加基本類型int
,但實際上Java會自動將其轉換為Integer
對象這行代碼等價于:
integerList.add(Integer.valueOf(5))
這是Java 5引入的特性,稱為自動裝箱
自動拆箱(Unboxing):
雖然代碼中沒有展示,但反過來從
Integer
到int
的自動轉換稱為自動拆箱例如:
int num = integerList.get(0)
會自動將Integer
轉換為int
執行過程
創建一個空的
ArrayList
,用于存儲Integer
對象添加數字5時:
Java自動調用
Integer.valueOf(5)
將基本類型5轉換為Integer
對象然后將這個
Integer
對象添加到列表中
同樣地處理數字10
最后打印列表內容,輸出將是
[5, 10]
注意事項
自動裝箱/拆箱是編譯器提供的語法糖,實際運行時還是會有對象創建的開銷
在性能敏感的場合,大量使用自動裝箱可能會影響性能
Integer
是對象,可以為null,而int
不能為null
3. 提供了一系列實用的方法
每個包裝類都提供了一些靜態方法和實例方法,用于數據類型轉換、常量獲取、數值計算等操作。
- 數據類型轉換:
Integer
類的parseInt
方法可以將字符串轉換為整數,Double
類的parseDouble
方法可以將字符串轉換為雙精度浮點數等。例如:
String str = "123";
int num = Integer.parseInt(str);
System.out.println(num);
- 獲取常量:
Byte
、Short
、Integer
、Long
等包裝類提供了MIN_VALUE
和MAX_VALUE
等常量,表示該數據類型的取值范圍。比如:
System.out.println("int類型的最小值:" + Integer.MIN_VALUE);
System.out.println("int類型的最大值:" + Integer.MAX_VALUE);
4. 實現自動裝箱和拆箱
自動裝箱是指將基本數據類型自動轉換為對應的包裝類對象,
自動拆箱則是將包裝類對象自動轉換為對應的基本數據類型。
Java 5 引入了自動裝箱和拆箱機制,讓代碼更加簡潔。例如:
// 自動裝箱
Integer integer = 10;
// 自動拆箱
int basicInt = integer;
在進行一些運算操作時,也會自動進行裝箱和拆箱,如:
Integer num1 = 5;
Integer num2 = 3;
int sum = num1 + num2; // num1和num2自動拆箱,進行加法運算后結果再賦值給基本數據類型變量
三,總結:
?