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