Java 包裝類
本小節(jié)我們將學(xué)習(xí) Java 的包裝類,我們將了解到什么是包裝類,為什么需要包裝類,Java 提供的包裝類有哪些,各種包裝類的常用方法和常量介紹,什么是裝箱操作以及什么是拆箱操作等內(nèi)容。
1. 什么是包裝類
Java 有 8 種基本數(shù)據(jù)類型,Java 中的每個基本類型都被包裝成了一個類,這些類被稱為包裝類。
包裝類可以分為 3 類:Number
、Character
、Boolean
,包裝類的架構(gòu)圖如下所示:

2. 為什么需要包裝類
我們知道 Java 是面向?qū)ο蟮木幊陶Z言,但為了便于開發(fā)者上手,Java 沿用了 C 語言的基本數(shù)據(jù)類型,因此 Java 數(shù)據(jù)類型被分為了基本數(shù)據(jù)類型和引用數(shù)據(jù)類型。
對于簡單的運(yùn)算,開發(fā)者可以直接使用基本數(shù)據(jù)類型。但對于需要對象化交互的場景(例如將基本數(shù)據(jù)類型存入集合中),就需要將基本數(shù)據(jù)類型封裝成 Java 對象,這是因?yàn)榛緮?shù)據(jù)類型不具備對象的一些特征,沒有對象的屬性和方法,也不能使用面向?qū)ο蟮木幊趟枷雭斫M織代碼。出于這個原因,包裝類就產(chǎn)生了。
包裝類就是一個類,因此它有屬性、方法,可以對象化交互。
3. 基本數(shù)據(jù)類型與包裝類
下表列出了基本數(shù)據(jù)類型對應(yīng)的包裝類。這些包裝類都位于 java.lang
包下,因此使用包裝類時,我們不需要手動引入。
基本數(shù)據(jù)類型 | 對應(yīng)的包裝類 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
除了 int
對應(yīng)的包裝類名稱為 Integer
以及 char
對應(yīng)的包裝類名稱 Character
,其他 6
種數(shù)據(jù)類型對應(yīng)的包裝類,命名都為其基本數(shù)據(jù)類型的首字母的大寫。
4. 包裝類常用方法
4.1 Number 類
Number 類是所有數(shù)值類型包裝類的父類,這里以其中一個子類 Integer
類為例,介紹其構(gòu)造方法、常用方法以及常量。
4.1.1 構(gòu)造方法
Integer 類提供兩個構(gòu)造方法:
Integer(int value)
:以 int 型變量作為參數(shù)創(chuàng)建 Integer 對象;Integer(String s)
:以 String 型變量作為參數(shù)創(chuàng)建 Integer 對象。
實(shí)例如下:
// 以 int 型變量作為參數(shù)創(chuàng)建 Integer 對象
Integer num = new Integer(3);
// 以 String 型變量作為參數(shù)創(chuàng)建 Integer 對象
Integer num = new Integer("8");
4.1.2 常用方法
byte byteValue()
:以 byte 類型返回該 Integer 的值;int compareTo(Integer anotherInteger)
:在數(shù)值上比較兩個 Integer 對象。如果這兩個值相等,則返回 0;如果調(diào)用對象的數(shù)值小于 anotherInteger 的數(shù)值,則返回負(fù)值;如果調(diào)用對象的數(shù)值大于 anotherInteger 的數(shù)值,則返回正值;boolean equals(Object obj)
:比較此對象與指定對象是否相等;int intValue()
:以 int 類型返回此 Integer 對象;int shortValue()
:以 short 類型返回此 Integer 對象;toString()
:返回一個表示該 Integer 值的 String 對象;static Integer valueOf(String str)
:返回保存指定的 String 值的 Integer 對 象;int parseInt(String str)
:返回包含在由 str 指定的字符串中的數(shù)字的等價整數(shù)值。
更多常用方法請翻閱官方文檔。
4.1.3 常用常量
MAX_VALUE
: 表示 int 型可取的最大值;MIN_VALUE
: 表示 int 型可取的最小值;SIZE
:表示以二進(jìn)制補(bǔ)碼形式表示 int 值的位數(shù);TYPE
: 表示基本類型 Class 實(shí)例。
這些常量的使用實(shí)例如下:
public class WrapperClassDemo1 {
public static void main(String[] args) {
int maxValue = Integer.MAX_VALUE;
int minValue = Integer.MIN_VALUE;
int size = Integer.SIZE;
System.out.println("int 類型可取的最大值" + maxValue);
System.out.println("int 類型可取的最小值" + minValue);
System.out.println("int 類型的二進(jìn)制位數(shù)" + size);
}
}
運(yùn)行結(jié)果:
int 類型可取的最大值2147483647
int 類型可取的最小值-2147483648
int 類型的二進(jìn)制位數(shù)32
4.2 Character 類
Character 類在對象中包裝一個基本類型為 char 的值。一個 Character 對象包含類型為 char 的單個字段。
4.2.1 構(gòu)造方法
Character 類提供了一個構(gòu)造方法:
Character(char value)
:很少使用。
4.2.2 常用方法
char charValue()
:返回此 Character 對象的值;int compareTo(Character anotherCharacter)
:返回此 Character 對象的值,根據(jù)數(shù)字比較兩個 Character 對象,若這兩個對象相等則返回 0 ;boolean equals(Object obj)
:將調(diào)用該方法的對象與指定的對象相比較;char toUpperCase(char ch)
:將字符參數(shù)轉(zhuǎn)換為大寫;char toLowerCase(char ch)
:將字符參數(shù)轉(zhuǎn)換為小寫;String toString()
:返回一個表示指定 char 值的 String 對象;char charValue()
:返回此 Character 對象的值;boolean isUpperCase(char ch)
:判斷指定字符是否是大寫字符;boolean isLowerCase(char ch)
:判斷指定字符是否是小寫字符。
更多常用方法請翻閱官方文檔。
4.3 Boolean 類
Boolean 類將基本類型為 boolean 的值包裝在一個對象中。一個 Boolean 類型的對象只包含一個類型為 boolean 的字段。此外,此類還為 boolean 和 String 的相互轉(zhuǎn)換提供了許多方法,并提供了處理 boolean 時非常有用的其他一些常量和方法。
4.3.1 構(gòu)造方法
Boolean 類提供了如下兩個構(gòu)造方法:
Boolean(boolean value)
:創(chuàng)建一個表示 value 參數(shù)的 boolean 對象(很少使用);Boolean(String s)
:以 String 變量作為參數(shù),創(chuàng)建 boolean 對象。此時,如果傳入的字符串不為 null,且忽略大小寫后的內(nèi)容等于 “true”,則生成 Boolean 對象值為 true,反之為 false。(很少使用)。
4.3.2 常用方法
boolean booleanValue()
:將 Boolean 對象的值以對應(yīng)的 boolean 值返回;boolean equals(Object obj)
:判斷調(diào)用該方法的對象與 obj 是否相等,當(dāng)且僅當(dāng)參數(shù)不是 null,而且與調(diào)用該方法的對象一樣都表示同一個 boolean 值的 Boolean 對象時, 才返回 true;boolean parseBoolean(Sting)
:將字符串參數(shù)解析為 boolean 值;String toString()
:返回表示該 boolean 值的 String 對象;boolean valueOf(String s)
:返回一個用指定的字符串表示值的 boolean 值。
更多常用方法請翻閱官方文檔。
4.3.3 常用常量
TRUE
:對應(yīng)基值 true 的 Boolean 對象;FALSR
:對應(yīng)基值 false 的 Boolean 對象;TYPE
:表示基本類型 Class 實(shí)例。
5. 裝箱和拆箱
裝箱就是基本數(shù)據(jù)類型向包裝類轉(zhuǎn)換;拆箱就是包裝類向基本數(shù)據(jù)類型轉(zhuǎn)換。裝箱和拆箱又有自動和手動之分。
實(shí)現(xiàn)裝箱的實(shí)例如下:
public class WrapperClassDemo2 {
public static void main(String[] args) {
// 自動裝箱
int num1 = 19;
Integer num2 = num1;
System.out.println("num2=" + num2);
// 手動裝箱
Integer num3 = new Integer(20);
System.out.println("num3=" + num3);
}
}
運(yùn)行結(jié)果:
num2=19
num3=20
自動裝箱就是直接將一個基本數(shù)據(jù)類型的變量,賦值給對應(yīng)包裝類型的變量;手動裝箱就是調(diào)用包裝類的構(gòu)造方法(在 Java14 中已經(jīng)過時,不推薦這樣的操作)。
實(shí)現(xiàn)拆箱的實(shí)例如下:
public class WrapperClassDemo3 {
public static void main(String[] args) {
// 自動拆箱
Integer num1 = 19;
int num2 = num1;
System.out.println("num2=" + num2);
// 手動拆箱
int num3 = num1.intValue();
System.out.println("num3=" + num3);
}
}
運(yùn)行結(jié)果:
num2=19
num3=19
自動拆箱就是直接將一個包裝類型的變量,賦值給對應(yīng)的基本數(shù)據(jù)類型變量;手動拆箱通過調(diào)用對應(yīng)包裝類下的 xxxValue()
方法來實(shí)現(xiàn)。
6. 小結(jié)
通過本小節(jié)的學(xué)習(xí),我們知道了包裝類就是將基本數(shù)據(jù)類型包裝成的類,它有屬性、方法,可以對象化交互。除了 int
對應(yīng)的包裝類名稱為 Integer
以及 char
對應(yīng)的包裝類名稱 Character
,其他 6
種數(shù)據(jù)類型對應(yīng)的包裝類,命名都為其基本數(shù)據(jù)類型的首字母的大寫。裝箱就是基本數(shù)據(jù)類型向包裝類轉(zhuǎn)換,拆箱就是包裝類向基本數(shù)據(jù)類型轉(zhuǎn)換。