Java的包裝類特性總結(jié)
一. 包裝類
1. 概念
我們知道,Java中的數(shù)據(jù)類型總體上分為基本數(shù)據(jù)類型和引用數(shù)據(jù)類型。引用類型的數(shù)據(jù)可以通過對象操作的形式進行使用,也就是說,我們可以通過對象的屬性和方法來進行操作。但如果是基本數(shù)據(jù)類型的數(shù)據(jù),我們能不能像操作對象那樣來操作呢?為了實現(xiàn)這個目標,Java為8種基本數(shù)據(jù)類型分別設計了對應的類,我們稱其為包裝類(Wrapper Classes ) ,或者稱其為外覆類或數(shù)據(jù)類型類。因為這些包裝類都是引用類型,所以我們就可以方便地操作這些數(shù)據(jù)的屬性和方法了。
其實之所以為8種基本數(shù)據(jù)類型都設計出對應的包裝類,從深層分析,主要是為了配合Java 5之后出現(xiàn)的泛型。 在泛型的使用中,基本數(shù)據(jù)類型和泛型不能配合使用,即Primitive Types 和Generic不能混用。舉個簡單的例子,比如我們想使用ArrayList、HashMap等集合時,這些集合都需要指明集合中數(shù)據(jù)的泛型。而int、double等基本類型是不允許被使用的,因為這些集合容器的泛型都必須是Object類型,所以就需要這些包裝類型了,如下圖所示:
2. 8個包裝類
有了這8個包裝類,我們就可以按照面向?qū)ο蟮乃季S來操作數(shù)據(jù)了,可以操作對象的屬性和方法,也可以給對象賦null值,這是基本類型做不到的。我們來看看Java中的基本類型與其對應的包裝類,如下表所示:
基本類型 | 包裝類型 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
從上面的表中我們可以看出,基本上包裝類的類名,就是把基本類型的首字母變成大寫,除了Integer和Character特殊一點。另外,Byte、Short、Integer、Long、Float、Double這六個類,都是Number的子類,它們具有一些共同的類型轉(zhuǎn)換方法,方便我們進行類型之間的轉(zhuǎn)換。
二. 常用包裝類
為了讓大家更好地掌握這些包裝類的用法及特性,壹哥在這里只把幾個常用的包裝類給大家介紹一下。
1. Integer簡介
Integer類中包含了一個int類型的字段。該類提供了一些可以方便處理int類型的常量,比如獲取整型的最大值和最小值等。另外該類還提供了多個方法,可以在 int類型和 String類型之間互相轉(zhuǎn)換。
1.1 Integer中的常量
Integer類包含以下4個常量:
- MAX_VALUE:是一個常量值,值為 231-1,代表int類型能夠表示的最大值;
- MIN_VALUE:是一個常量值,值為 -231,代表int類型能夠表示的最小值;
- SIZE:以二進制補碼的形式,表示 int值的比特位數(shù);
- TYPE:代表基本類型 int 的 Class 實例對象。
1.2 Integer中的方法
Integer類中提供的常用方法如下表所示:
方法 | 返回值 | 功能 |
---|---|---|
byteValue() | byte | 轉(zhuǎn)換為byte類型 |
shortValue() | short | 轉(zhuǎn)換為short類型 |
intValue() | int | 轉(zhuǎn)換為int類型 |
toString() | String | 轉(zhuǎn)換為String類型 |
equals(Object obj) | boolean | 比較此對象與指定對象是否相等 |
compareTo(Integer anotherlnteger) | int | 比較兩個 Integer對象的數(shù)值大小,如相等,則返回 0; 如調(diào)用對象的數(shù)值小于 anotherlnteger,則返回負值; 如調(diào)用對象的數(shù)值大于 anotherlnteger,則返回正值 |
valueOf(String s) | Integer | 將String類型的數(shù)值轉(zhuǎn)為 Integer對象 |
parseInt(String s) | int | 將String字符串轉(zhuǎn)為 int 數(shù)值 |
我們要注意,在將字符串轉(zhuǎn)換為 int類型數(shù)值的過程中,如果字符串為非數(shù)值型的內(nèi)容,轉(zhuǎn)換時可能會出現(xiàn)NumberFormatException異常。
2. Byte簡介
Byte類中內(nèi)含了一個byte類型的字段,該類提供了一些可以方便處理byte值的常量和方法,方便了我們的操作。
2.1 Byte中的常量
Byte類中提供的常量如下:
- MIN_VALUE:byte類的最小值,-128;
- MAX_VALUE:byte類的最大值,127;
- SIZE:以二進制補碼形式表示的 byte值位數(shù);
- TYPE:表示byte的Class實例對象。
2.2 Byte中的方法
Byte類中的常用方法如下:
方法 | 返回值 | 功能 |
---|---|---|
byteValue() | byte | 轉(zhuǎn)換為byte類型 |
compareTo(Byte bytel) | int | 比較兩個byte值的大小 |
doubleValue() | double | 轉(zhuǎn)換為double類型 |
intValue() | int | 轉(zhuǎn)換為int類型 |
parseByte(String s) | byte | 將String類型值轉(zhuǎn)為Byte類型 |
toStringO | String | 將 byte值轉(zhuǎn)為String字符串 |
valueOf(String s) | Byte | 將String字符串轉(zhuǎn)為Byte對象 |
equals(Object obj) | boolean | 比較兩個對象是否相等,如果調(diào)用該方法的對象與obj相等則返回 true,否則返回false |
3. Float簡介
Float類中內(nèi)含了一個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類型值的最小標準值常量,即 2-126;
- NaN:保存float類型的非數(shù)值常量;
- SIZE:以二進制補碼形式表示的float值的比特位數(shù);
- TYPE:表示float類型的Class對象實例。
3.2 Float中的方法
Float類中的常用的方法如下表所示:
方法 | 返回值 | 功能 |
---|---|---|
byteValue() | byte | 轉(zhuǎn)為byte類型 |
doubleValue() | double | 轉(zhuǎn)為double類型 |
floatValue() | float | 轉(zhuǎn)為float類型 |
intValue() | int | 強制轉(zhuǎn)換為int類型 |
longValue() | long | 強制轉(zhuǎn)換為long類型 |
shortValue() | short | 強制轉(zhuǎn)換為short類型 |
isNaN() | boolean | 判斷該值是否為非數(shù)字值,如果是則返回true,否則返回false |
isNaN(float v) | boolean | 如果指定的參數(shù)是一個非數(shù)字值,則返回 true,否則返回 false |
toString() | String | 將Float值轉(zhuǎn)為 String對象 |
valueOf(String s) | Float | 將String轉(zhuǎn)為Float對象 |
parseFloat(String s) | float | 將String轉(zhuǎn)為float數(shù)值 |
4. Double簡介
Double類中內(nèi)含了一個double類型的字段,該類提供了一些可以方便處理double值的常量和方法,方便了我們的操作。
4.1 Double中的常量
Double類中的常量如下所示:
- MAX_VALUE:表示double類型的最大值,1.8E308;
- MIN_VALUE:表示double類型的最小值,4.9E-324;
- NaN:表示double類型的非數(shù)字值;
- NEGATIVE_INFINITY:表示double類型負無窮大的常量值;
- POSITIVE_INFINITY:表示double類型正無窮大的常量值;
- SIZE:以二進制補碼形式表示的double值的比特位數(shù);
- TYPE:表示double類型的Class實例對象。
4.2 Double中的方法
Double類中的常用方法如下表所示:
方法 | 返回值 | 功能 |
---|---|---|
byteValue() | byte | 轉(zhuǎn)為byte類型 |
doubleValue() | double | 轉(zhuǎn)為double類型 |
fioatValue() | float | 轉(zhuǎn)為float類型 |
intValue() | int | 強制轉(zhuǎn)換為int類型 |
longValue() | long | 強制轉(zhuǎn)換為long類型 |
shortValue() | short | 強制轉(zhuǎn)換為short類型 |
isNaN() | boolean | 如果該值是一個非數(shù)字值則返回true,否則返回false |
isNaN(double v) | boolean | 如果指定的參數(shù)是一個非數(shù)字值則返回 true,否則返回 false |
toString() | String | 將Double值轉(zhuǎn)為String字符串 |
valueOf(String s) | Double | 將String值轉(zhuǎn)為Double對象 |
parseDouble(String s) | double | 將數(shù)字字符串轉(zhuǎn)換為Double值 |
5. Character簡介
Character類用于對單個字符進行操作,內(nèi)含了一個char類型的字段,該類提供了一些可以方便處理char值的方法,方便了我們的操作。
5.1 Character中的方法
Character類中的常用方法如下表所示:
方法 | 描述 |
---|---|
void Character(char value) | 構(gòu)造一個新的Character對象,表示指定的char值 |
char charValue() | 返回該Character對象的值 |
int compareTo(Character anotherCharacter) | 比較兩個Character對象的大小 |
boolean equals(Character anotherCharacter) | 將該對象與指定對象比較,當且僅當參數(shù)不是null,且此對象 與該Character對象相同時,結(jié)果為true |
boolean isDigit(char ch) | 判斷指定字符是否為數(shù)字 |
boolean isLetter(int codePoint) | 判斷指定的字符是否為字母 |
boolean isLetterOrDigit(int codePoint) | 判斷指定的字符是否為字母或數(shù)字 |
boolean isLowerCase(char ch) | 判斷指定的字符是否為小寫字母 |
boolean isUpperCase(char ch) | 判斷指定的字符是否為大寫字母 |
char toLowerCase(char ch) | 將指定的字符參數(shù)轉(zhuǎn)為小寫 |
char toUpperCase(char ch) | 將指定的字符參數(shù)轉(zhuǎn)為大寫 |
5.2 代碼案例
Character類的方法比較多,壹哥給大家設計了如下代碼案例進行演示:
/** * @author */ public class CharacterTest { public static void main(String[] args) { //構(gòu)造一個Character對象,該方式已過時 Character character = new Character('A'); //比較兩個對象是否相同,0表示相同;正數(shù)表示前者大于后者;負數(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<str.length();i++) { //判斷每一個字符是否是字母 boolean isLetter = Character.isLetter(str.charAt(i)); System.out.println(str.charAt(i)+", 是字母嗎?="+isLetter); } } }
6. Boolean簡介
Boolean類中內(nèi)含了一個boolean類型的字段,該類提供了一些可以方便處理boolean值的常量和方法,方便了我們的操作。
6.1 Boolean中的常量
Boolean類包含的常量如下所示:
- TRUE:代表值為true的常量;
- FALSE:代表值為false的常量;
- TYPE:表示boolean類型的Class實例對象。
6.2 Boolean中的方法
Boolean類中常用的方法如下表所示:
方法 | 返回值 | 功能 |
---|---|---|
booleanValue() | boolean | 轉(zhuǎn)為boolean類型 |
equals(Object obj) | boolean | 判斷調(diào)用該方法的對象與obj是否相等。當參數(shù)不是null,且與調(diào)用該方法的對象相同時則返回true |
parseBoolean(String s) | boolean | 將String字符串參數(shù)轉(zhuǎn)為 boolean值 |
toString() | String | 返回表示該boolean值的String字符串 |
valueOf(String s) | boolean | 將指定的字符串轉(zhuǎn)為boolean值 |
7. 基本用法
現(xiàn)在我們已經(jīng)知道有哪些包裝類了,那么這些包裝類怎么用呢?接下來我們就通過一些代碼,來學習常用的包裝類吧。
7.1 Integer的用法
我們先通過一段代碼,來了解一下Integer的用法,因為在實際開發(fā)中,Integer是比較常用的包裝類。
/** * @autho */ public class WrapperTest { public static void main(String[] args) { //Integer變量的幾種定義方式 Integer i001 = new Integer(50); Integer i002=new Integer("100"); //注意:將字符串轉(zhuǎn)為數(shù)值型時,也要注意待轉(zhuǎn)換的類型必須匹配,我們不能將非數(shù)字的字符串轉(zhuǎn)為數(shù)值型,否則會出現(xiàn)NumberFormatException //Integer i007=new Integer("hello"); Integer i003 = 100; //利用靜態(tài)方法,返回一個指定int值的Integer對象 Integer i004=Integer.valueOf(200); //利用靜態(tài)方法,返回指定String值的Integer對象 Integer i005=Integer.valueOf("300"); //第2個參數(shù)radix,表示基數(shù),即當前采用的進制 Integer i006=Integer.valueOf("400",16); System.out.println("i006="+i006); //獲取Integer的最大值與最小值 System.out.println(Integer.MAX_VALUE); System.out.println(Integer.MIN_VALUE); } }
valueOf()方法是一個靜態(tài)方法,用于返回給定參數(shù)的原生Number對象,其參數(shù)可以是原生數(shù)據(jù)類型和String等。如果該方法帶有兩個參數(shù),那么第一個是字符串,第二個則是基數(shù),用于表明要轉(zhuǎn)換成的進制。
7.2 Double的用法
接下來我們再來看看Double的用法。
/** * @author * */ 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); } }
7.3 字符串轉(zhuǎn)包裝類
有了包裝類,我們就可以將字符串類型的數(shù)值轉(zhuǎn)換成Integer或者是Double等類型。在下面的案例中,我們可以利用包裝類提供的各個parseXXX()方法,來將字符串轉(zhuǎn)為對應的包裝類型。
/** * @author * */ 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)); } }
在以上代碼中,除了有Integer.parseInt()、Double.parseDouble()方法之外,還有Float.parseFloat()、Byte.parseByte()、Short.parseShort()、 Boolean.parseBoolean()
等方法可以將字符串轉(zhuǎn)為對應的包裝類。
但是我們要注意,在將字符串轉(zhuǎn)為Integer或Double等類型時,并不是所有的字符串內(nèi)容都可以轉(zhuǎn)換成功,有可能會出現(xiàn)NumberFormatException異常,如下所示:
Exception in thread "main" java.lang.NumberFormatException: For input string: "hello"
7.4 類型間轉(zhuǎn)換
Byte、Short、Integer、Long、Float、Double這六個類,有一個共同的父類Number。其中,Number提供了一組xxxValue()方法,可以用于將某種類型轉(zhuǎn)換成其他的類型,案例如下:
/** * @author * */ 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)字符串,默認是按照10進制進行轉(zhuǎn)換 String intStr = Integer.toString(1000); String dobuleStr = Double.toString(200.5); Byte by=126; String byteStr=Byte.toString(by); //將數(shù)字轉(zhuǎn)換成二進制 String str1 = Integer.toBinaryString(num); // 將數(shù)字轉(zhuǎn)換成八進制 String str2 = Integer.toHexString(num); // 將數(shù)字轉(zhuǎn)換成十六進制 String str3 = Integer.toOctalString(num); } }
每種包裝類之間,都可以使用這些方法進行類型的轉(zhuǎn)換。另外每種包裝類都提供了對應的toString()
或toBinaryString()/toHexString()/toOctalString()
方法,可以將該包裝類轉(zhuǎn)為十進制、二進制、八進制和十六進制的String字符串,比如Integer.toString()、Double.toString()
等,這里壹哥就不再一一贅述了。
三. 結(jié)語
至此,就把Java中的常用包裝類給大家介紹完畢了,現(xiàn)在你知道包裝類和基本類型有什么聯(lián)系和區(qū)別了嗎?本文重點總結(jié)如下:
- Java提供的包裝類可以把基本類型包裝為class,從而可以通過面向?qū)ο蟮姆绞讲僮骰绢愋停?/li>
- 整數(shù)和浮點數(shù)的包裝類都繼承自Number類;
- 包裝類提供了大量的實用方法和常量。
以上就是Java的包裝類特性總結(jié)的詳細內(nèi)容,更多關(guān)于Java 包裝類的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Java實現(xiàn)彩色圖片轉(zhuǎn)換為灰度圖片的示例代碼
將彩色圖片轉(zhuǎn)換為灰度圖片是圖像處理中的常見操作,通常用于簡化圖像、增強對比度、或者進行后續(xù)的圖像分析,本項目的目標是通過Java實現(xiàn)將彩色圖片轉(zhuǎn)換為灰度圖片,需要的朋友可以參考下2025-02-02Spring Boot實現(xiàn)郵件發(fā)送必會的5種姿勢
這篇文章主要給大家介紹了關(guān)于Spring Boot實現(xiàn)郵件發(fā)送必會的5種姿勢,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Spring Boot具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧2019-07-07簡單捋捋@RequestParam 和 @RequestBody的使用
這篇文章主要介紹了簡單捋捋@RequestParam 和 @RequestBody的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-12-12springboot結(jié)合mysql主從來實現(xiàn)讀寫分離的方法示例
這篇文章主要介紹了springboot結(jié)合mysql主從來實現(xiàn)讀寫分離的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-04-04解析SpringSecurity自定義登錄驗證成功與失敗的結(jié)果處理問題
這篇文章主要介紹了SpringSecurity系列之自定義登錄驗證成功與失敗的結(jié)果處理問題,本文通過實例給大家講解的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-11-11Java客戶端調(diào)用.NET的WebService實例
下面小編就為大家?guī)硪黄狫ava客戶端調(diào)用.NET的WebService實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-09-09Fluent Mybatis如何做到代碼邏輯和sql邏輯的合一
對比原生Mybatis, Mybatis Plus或者其他框架,F(xiàn)luentMybatis提供了哪些便利呢?很多朋友對這一問題不是很清楚,今天小編給大家?guī)硪黄坛剃P(guān)于Fluent Mybatis如何做到代碼邏輯和sql邏輯的合一,一起看看吧2021-08-08