從零開始學(xué)Java之包裝類有哪些?
一. 包裝類
概念
我們知道,Java中的數(shù)據(jù)類型總體上分為基本數(shù)據(jù)類型和引用數(shù)據(jù)類型。引用類型的數(shù)據(jù)可以通過對象操作的形式進(jìn)行使用,也就是說,我們可以通過對象的屬性和方法來進(jìn)行操作。但如果是基本數(shù)據(jù)類型的數(shù)據(jù),我們能不能像操作對象那樣來操作呢?為了實(shí)現(xiàn)這個(gè)目標(biāo),Java為8種基本數(shù)據(jù)類型分別設(shè)計(jì)了對應(yīng)的類,我們稱其為包裝類(Wrapper Classes),或者稱其為外覆類或數(shù)據(jù)類型類。因?yàn)檫@些包裝類都是引用類型,所以我們就可以方便地操作這些數(shù)據(jù)的屬性和方法了。
其實(shí)之所以為8種基本數(shù)據(jù)類型都設(shè)計(jì)出對應(yīng)的包裝類,從深層分析,主要是為了配合Java 5之后出現(xiàn)的泛型。在泛型的使用中,基本數(shù)據(jù)類型和泛型不能配合使用,即Primitive Types 和Generic不能混用。舉個(gè)簡單的例子,比如我們想使用ArrayList、HashMap等集合時(shí),這些集合都需要指明集合中數(shù)據(jù)的泛型。而int、double等基本類型是不允許被使用的,因?yàn)檫@些集合容器的泛型都必須是Object類型,所以就需要這些包裝類型了,如下圖所示:

8個(gè)包裝類
有了這8個(gè)包裝類,我們就可以按照面向?qū)ο蟮乃季S來操作數(shù)據(jù)了,可以操作對象的屬性和方法,也可以給對象賦null值,這是基本類型做不到的。我們來看看Java中的基本類型與其對應(yīng)的包裝類,如下表所示:

從上面的表中我們可以看出,基本上包裝類的類名,就是把基本類型的首字母變成大寫,除了Integer和Character特殊一點(diǎn)。另外,Byte、Short、Integer、Long、Float、Double這六個(gè)類,都是Number的子類,它們具有一些共同的類型轉(zhuǎn)換方法,方便我們進(jìn)行類型之間的轉(zhuǎn)換。
二. 常用包裝類
為了讓大家更好地掌握這些包裝類的用法及特性,小編在這里只把幾個(gè)常用的包裝類給大家介紹一下。
Integer簡介
Integer類中包含了一個(gè)int類型的字段。該類提供了一些可以方便處理int類型的常量,比如獲取整型的最大值和最小值等。另外該類還提供了多個(gè)方法,可以在 int類型和 String類型之間互相轉(zhuǎn)換。
1.1 Integer中的常量
Integer類包含以下4個(gè)常量:
● MAX_VALUE:是一個(gè)常量值,值為 231-1,代表int類型能夠表示的最大值;
● MIN_VALUE:是一個(gè)常量值,值為 -231,代表int類型能夠表示的最小值;
● SIZE:以二進(jìn)制補(bǔ)碼的形式,表示 int值的比特位數(shù);
● TYPE:代表基本類型 int 的 Class 實(shí)例對象。
1.2 Integer中的方法
Integer類中提供的常用方法如下表所示:

我們要注意,在將字符串轉(zhuǎn)換為 int類型數(shù)值的過程中,如果字符串為非數(shù)值型的內(nèi)容,轉(zhuǎn)換時(shí)可能會(huì)出現(xiàn)NumberFormatException異常。
2. Byte簡介
Byte類中內(nèi)含了一個(gè)byte類型的字段,該類提供了一些可以方便處理byte值的常量和方法,方便了我們的操作。
2.1 Byte中的常量
Byte類中提供的常量如下:
● MIN_VALUE:byte類的最小值,-128;
● MAX_VALUE:byte類的最大值,127;
● SIZE:以二進(jìn)制補(bǔ)碼形式表示的 byte值位數(shù);
● TYPE:表示byte的Class實(shí)例對象。
2.2 Byte中的方法
Byte類中的常用方法如下:

Float簡介
Float類中內(nèi)含了一個(gè)float類型的字段,該類提供了一些可以方便處理float值的常量和方法,方便了我們的操作。
3.1 Float中的常量
Float類的常量值如下所示:
● MAX_VALUE:表示float的最大值,為 1.4E38;
● MIN_VALUE:表示float的最小值,為3.4E-45;
● MAX_EXPONENT:float變量可能具有的最大指數(shù);
● MIN_EXPONENT:float變量可能具有的最小指數(shù);
● MIN_NORMAL:保存float類型值的最小標(biāo)準(zhǔn)值常量,即 2-126;
● NaN:保存float類型的非數(shù)值常量;
● SIZE:以二進(jìn)制補(bǔ)碼形式表示的float值的比特位數(shù);
● TYPE:表示float類型的Class對象實(shí)例。
3.2 Float中的方法
Float類中的常用的方法如下表所示:

Double簡介
Double類中內(nèi)含了一個(gè)double類型的字段,該類提供了一些可以方便處理double值的常量和方法,方便了我們的操作。
4.1 Double中的常量
Double類中的常量如下所示:
● MAX_VALUE:表示double類型的最大值,1.8E308;
● MIN_VALUE:表示double類型的最小值,4.9E-324;
● NaN:表示double類型的非數(shù)字值;
● NEGATIVE_INFINITY:表示double類型負(fù)無窮大的常量值;
● POSITIVE_INFINITY:表示double類型正無窮大的常量值;
● SIZE:以二進(jìn)制補(bǔ)碼形式表示的double值的比特位數(shù);
● TYPE:表示double類型的Class實(shí)例對象。
4.2 Double中的方法
Double類中的常用方法如下表所示:

Character簡介
Character類用于對單個(gè)字符進(jìn)行操作,內(nèi)含了一個(gè)char類型的字段,該類提供了一些可以方便處理char值的方法,方便了我們的操作。
5.1 Character中的方法
Character類中的常用方法如下表所示:

5.2 代碼案例
Character類的方法比較多,小編給大家設(shè)計(jì)了如下代碼案例進(jìn)行演示:
public class CharacterTest {
public static void main(String[] args) {
//構(gòu)造一個(gè)Character對象,該方式已過時(shí)
Character character = new Character('A');
//比較兩個(gè)對象是否相同,0表示相同;正數(shù)表示前者大于后者;負(fù)數(shù)表示前者小于后者
int result = character.compareTo(new Character('B'));
System.out.println(result); // 輸出 -1,表示A小于B
//獲取Character對象的第2種方式,注意參數(shù)必須是單引號括起來的字符型,
Character char02 = Character.valueOf('B');
//獲取Character對象的第3種方式,常用該方式
Character char03='C';
//將大寫字符轉(zhuǎn)為小寫字符
char lowerCase = Character.toLowerCase('Y');
System.out.println("lowerCase="+lowerCase);
String str="hello666";
for(int i=0;i
//判斷每一個(gè)字符是否是字母
boolean isLetter = Character.isLetter(str.charAt(i));
System.out.println(str.charAt(i)+", 是字母嗎?="+isLetter);
}
}
}
復(fù)制代碼
Boolean簡介
Boolean類中內(nèi)含了一個(gè)boolean類型的字段,該類提供了一些可以方便處理boolean值的常量和方法,方便了我們的操作。
6.1 Boolean中的常量
Boolean類包含的常量如下所示:
● TRUE:代表值為true的常量;
● FALSE:代表值為false的常量;
● TYPE:表示boolean類型的Class實(shí)例對象。
6.2 Boolean中的方法
Boolean類中常用的方法如下表所示:

基本用法
現(xiàn)在我們已經(jīng)知道有哪些包裝類了,那么這些包裝類怎么用呢?接下來我們就通過一些代碼,來學(xué)習(xí)常用的包裝類吧。
7.1 Integer的用法
我們先通過一段代碼,來了解一下Integer的用法,因?yàn)樵趯?shí)際開發(fā)中,Integer是比較常用的包裝類。
public class WrapperTest {
public static void main(String[] args) {
//Integer變量的幾種定義方式
Integer i001 = new Integer(50);
Integer i002=new Integer("100");
//注意:將字符串轉(zhuǎn)為數(shù)值型時(shí),也要注意待轉(zhuǎn)換的類型必須匹配,我們不能將非數(shù)字的字符串轉(zhuǎn)為數(shù)值型,否則會(huì)出現(xiàn)NumberFormatException
//Integer i007=new Integer("hello");
Integer i003 = 100;
//利用靜態(tài)方法,返回一個(gè)指定int值的Integer對象
Integer i004=Integer.valueOf(200);
//利用靜態(tài)方法,返回指定String值的Integer對象
Integer i005=Integer.valueOf("300");
//第2個(gè)參數(shù)radix,表示基數(shù),即當(dāng)前采用的進(jìn)制
Integer i006=Integer.valueOf("400",16);
System.out.println("i006="+i006);
//獲取Integer的最大值與最小值
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);
}
}
復(fù)制代碼
valueOf()方法是一個(gè)靜態(tài)方法,用于返回給定參數(shù)的原生Number對象,其參數(shù)可以是原生數(shù)據(jù)類型和String等。如果該方法帶有兩個(gè)參數(shù),那么第一個(gè)是字符串,第二個(gè)則是基數(shù),用于表明要轉(zhuǎn)換成的進(jìn)制。
7.2 Double的用法
接下來我們再來看看Double的用法。
public class WrapperTest {
public static void main(String[] args) {
//Double類型的用法
//將數(shù)值型或字符串類型轉(zhuǎn)為Double類型
Double d001 = new Double(100.1);
Double d002 = new Double("200.2");
//Double d007 = new Double("hello");
Double d003 = 300.3;
Double d004 =Double.valueOf(400.4);
//通過doubleValue()方法取double值
System.out.println("d004="+d004.doubleValue());
Double d005 =Double.valueOf("500.5");
//直接使用
System.out.println("d005="+d005);
//獲取最大值和最小值
System.out.println(Double.MAX_VALUE);
System.out.println(Double.MIN_VALUE);
}
}
復(fù)制代碼
7.3 字符串轉(zhuǎn)包裝類
有了包裝類,我們就可以將字符串類型的數(shù)值轉(zhuǎn)換成Integer或者是Double等類型。在下面的案例中,我們可以利用包裝類提供的各個(gè)parseXXX()方法,來將字符串轉(zhuǎn)為對應(yīng)的包裝類型。
public class WrapperTest {
public static void main(String[] args) {
//字符串轉(zhuǎn)Integer或Double類型
String s1 = "123";
//方式1:
int i007 = Integer.parseInt(s1);
System.out.println("i007="+i007);
//方式2:
int i008 = Integer.valueOf(s1);
System.out.println("i008="+i008);
String s2 = "20.5";
//方式1:
double d006 = Double.parseDouble(s2);
System.out.println("d006="+d006);
//方式2:
double d007 = Double.valueOf(s2);
System.out.println("d007="+d007);
//java.lang.NumberFormatException,數(shù)字格式化異常
//String s3 = "hello";
String s3 = null;
System.out.println(Integer.parseInt(s3));
}
}
復(fù)制代碼
在以上代碼中,除了有Integer.parseInt()、Double.parseDouble()方法之外,還有Float.parseFloat()、Byte.parseByte()、Short.parseShort()、Boolean.parseBoolean()等方法可以將字符串轉(zhuǎn)為對應(yīng)的包裝類。
但是我們要注意,在將字符串轉(zhuǎn)為Integer或Double等類型時(shí),并不是所有的字符串內(nèi)容都可以轉(zhuǎn)換成功,有可能會(huì)出現(xiàn)NumberFormatException異常,如下所示:
Exception in thread "main" java.lang.NumberFormatException: For input string: "hello"

7.4 類型間轉(zhuǎn)換
Byte、Short、Integer、Long、Float、Double這六個(gè)類,有一個(gè)共同的父類Number。其中,Number提供了一組xxxValue()方法,可以用于將某種類型轉(zhuǎn)換成其他的類型,案例如下:
public class WrapperTest {
@SuppressWarnings("null")
public static void main(String[] args) {
//類型間轉(zhuǎn)換
Integer a = 100;
//將Integer轉(zhuǎn)為Byte類型
Byte b = a.byteValue();
//將Integer轉(zhuǎn)為Short類型
Short c = a.shortValue();
//將Integer轉(zhuǎn)為Long類型
Long d = a.longValue();
//將Integer轉(zhuǎn)為Float類型
Float e = a.floatValue();
//將Integer轉(zhuǎn)為Double類型
Double f = a.doubleValue();
//取出數(shù)值的整數(shù)部分,將Integer轉(zhuǎn)為int
int g = a.intValue();
System.out.println("a="+a+",b="+b+",c="+c+",d="+d+",e="+e+",f="+f+",g="+g);
//包裝類轉(zhuǎn)字符串,默認(rèn)是按照10進(jìn)制進(jìn)行轉(zhuǎn)換
String intStr = Integer.toString(1000);
String dobuleStr = Double.toString(200.5);
Byte by=126;
String byteStr=Byte.toString(by);
//將數(shù)字轉(zhuǎn)換成二進(jìn)制
String str1 = Integer.toBinaryString(num);
// 將數(shù)字轉(zhuǎn)換成八進(jìn)制
String str2 = Integer.toHexString(num);
// 將數(shù)字轉(zhuǎn)換成十六進(jìn)制
String str3 = Integer.toOctalString(num);
}
}
復(fù)制代碼
每種包裝類之間,都可以使用這些方法進(jìn)行類型的轉(zhuǎn)換。另外每種包裝類都提供了對應(yīng)的toString()或toBinaryString()/toHexString()/toOctalString()方法,可以將該包裝類轉(zhuǎn)為十進(jìn)制、二進(jìn)制、八進(jìn)制和十六進(jìn)制的String字符串,比如Integer.toString()、Double.toString()等,這里小編就不再一一贅述了。

猜你喜歡LIKE
相關(guān)推薦HOT
更多>>
SEO優(yōu)化
SEO優(yōu)化,1、合理的title、description、keywords:搜索對著三項(xiàng)的權(quán)重逐個(gè)減小,title值強(qiáng)調(diào)重點(diǎn)即可;description把頁面內(nèi)容高度概括,不可過...詳情>>
2023-04-03 15:11:51
Python數(shù)據(jù)生產(chǎn)器
Python數(shù)據(jù)生產(chǎn)器,在軟件開發(fā)、測試或者數(shù)據(jù)分析過程中,有時(shí)候會(huì)需要一些測試數(shù)據(jù)。做測試的時(shí)候,需要模擬真實(shí)的環(huán)境,但是又不能直接使用真...詳情>>
2023-03-28 15:56:13
Java集合是什么?Java集合詳解
Java集合是Java編程語言中的一個(gè)重要概念,用于存儲(chǔ)、管理和處理數(shù)據(jù)。Java集合框架提供了一組接口和類,用于實(shí)現(xiàn)常見的數(shù)據(jù)結(jié)構(gòu),如列表、棧、...詳情>>
2023-03-20 19:12:47
js查找字符串中指定字符的位置
另外,如果要查找一個(gè)字符串中所有出現(xiàn)的指定字符的位置,可以使用indexOf()方法結(jié)合循環(huán)來實(shí)現(xiàn)。然后,我們使用循環(huán)遍歷字符串中的每一個(gè)字符...詳情>>
2023-03-10 14:06:35熱門推薦
從零開始學(xué)Java之包裝類有哪些?
沸實(shí)現(xiàn)垂直居中的幾種方法,不知道寬高的情況下如何實(shí)現(xiàn)元素水平垂直居中?
熱forEach中的await
熱說說React中onClick綁定后的工作原理
新小程序路由跳轉(zhuǎn)
說說gulp和webpack的區(qū)別
跨域如何解決
SEO優(yōu)化
Null和undefined的區(qū)別
Python數(shù)據(jù)生產(chǎn)器
react中怎么實(shí)現(xiàn)vue中的計(jì)算屬性以及watch
經(jīng)典面試題:static加載機(jī)制你知道嗎?
消息中間件常用協(xié)議有哪些
Java集合是什么?Java集合詳解
技術(shù)干貨







快速通道 更多>>
-
課程介紹
點(diǎn)擊獲取大綱 -
就業(yè)前景
查看就業(yè)薪資 -
學(xué)習(xí)費(fèi)用
了解課程價(jià)格 -
優(yōu)惠活動(dòng)
領(lǐng)取優(yōu)惠券 -
學(xué)習(xí)資源
領(lǐng)3000G教程 -
師資團(tuán)隊(duì)
了解師資團(tuán)隊(duì) -
實(shí)戰(zhàn)項(xiàng)目
獲取項(xiàng)目源碼 -
開班地區(qū)
查看來校路線