Java面向?qū)ο笾b類的用途與實際使用
一、什么是包裝類
包裝類(Wrapper Class): Java是一個面向?qū)ο蟮木幊陶Z言,但是Java中的八種基本數(shù)據(jù)類型卻是不面向?qū)ο蟮?,為了使用方便和解決這個不足,在設(shè)計類時為每個基本數(shù)據(jù)類型設(shè)計了一個對應(yīng)的類進行代表,這樣八種基本數(shù)據(jù)類型對應(yīng)的類統(tǒng)稱為包裝類(Wrapper Class),包裝類均位于java.lang包。
二、包裝類的用途
為了使用方便Java中將8中基本數(shù)據(jù)類型進行了封裝:除了Integer和Character類以后,其它六個類的類名和基本數(shù)據(jù)類型一直,只是類名的第一個字母大寫即可。
boolean —> Boolean
char —> Character
byte—> Byte
short—> Short
long—> Long
int —> Integer
float—> Float
double—> Double
對于包裝類說,用途主要包含兩種:
a、作為 和基本數(shù)據(jù)類型對應(yīng)的類 類型存在,方便涉及到對象的操作。
b、包含每種基本數(shù)據(jù)類型的相關(guān)屬性如最大值、最小值等,以及相關(guān)的操作方法。
三、包裝類的實際使用(以int和integer為例)
1.int和integer類之間的轉(zhuǎn)換
在實際轉(zhuǎn)換時,使用Integer類的構(gòu)造方法和Integer類內(nèi)部的intValue方法實現(xiàn)這些類型之間的相互轉(zhuǎn)換:
//
int n=5;
Integer n1=new Integer(n);
System.out.println("int類型轉(zhuǎn)換為integer類:"+n1);
//
Integer i=new Integer(50);
int i1 = i.intValue();
System.out.println("integer類轉(zhuǎn)換為int類型:"+i1);
2、Integer類內(nèi)部的常用方法
Integer類的主要方法有:parseInt方法和toString方法。
//parseInt方法: 數(shù)字字符串類型轉(zhuǎn)成int類型
String ss="123";
int ii = Integer.parseInt(ss);
System.out.println("字符類型轉(zhuǎn)成整型:"+ii);
//toString方法:int類型轉(zhuǎn)成數(shù)字字符串類型
int ii2=123;
String ss2 = Integer.toString(ii2);
System.out.println("int類型轉(zhuǎn)成數(shù)字字符串類型:"+ss);
JDK自從1.5版本以后,就引入了自動拆裝箱的語法,也就是在進行基本數(shù)據(jù)類型和對應(yīng)的包裝類轉(zhuǎn)換時,系統(tǒng)將自動進行,這將大大方便程序員的代碼書寫。
自動裝箱:將 基本數(shù)據(jù)類型 封裝為對象類型,來符合java的面向?qū)ο蟮乃枷搿?/p>
自動拆箱:將對象重新轉(zhuǎn)化為基本數(shù)據(jù)類型。
//5是基本數(shù)據(jù)類型,通過自動裝箱變成對象類型。
//編譯器執(zhí)行了Integer iii = Integer.valueOf(5)
Integer iii=5;
//自動拆箱,實際上執(zhí)行了 int iii2 = iii.intValue()
int iii2=iii;
System.out.println(iii2);
valueOf()源碼分析:
public static Integer valueOf(int i) {
assert IntegerCache.high>= 127;
if (i >= IntegerCache.low&& i <= IntegerCache.high)
return IntegerCache.cache[i+ (-IntegerCache.low)];
return new Integer(i);
}
說明:Integer iii=5;相當(dāng)于編譯器執(zhí)行了Integer iii = Integer.valueOf(5)操作。這個方法就是返回一個 Integer 對象,只是在返回之前,看作了一個判斷,判斷當(dāng)前 i 的值是否在 [-128,127] 區(qū)別,且 IntegerCache 中是否存在此對象,如果存在,則直接返回引用,否則,創(chuàng)建一個新的對象。
3.包裝類的緩存值
各個包裝類緩存值范圍 :
boolean:true和false
byte:-128~127
char:0~127
short:-128~127
int:-128~127
long:-128~127
特別注意:對于float和double沒有緩存。
在對上述值進行裝箱的時候(如:Character c1=127;or Integer i= Integer.valueOf(1); 這個不行哦:Integer i2=new Integer(1);因為這是新建了一個對象出來。),并不是創(chuàng)建一個新對象而是使用緩存中的對象,如果超出范圍則需要新建立對象。
四、常見的面試題
1.Java中Int與Integer的區(qū)別?
一、int 是基本類型,直接存數(shù)值;而integer引用數(shù)據(jù)類型。
二、Int的聲明不需要實例化,且變量聲明后的初始值為0;Integer的是一個類,初始值為null,需要進行實例化,才能對變量數(shù)據(jù)進行處理。
三、Integer類是int的包裝類,實際開發(fā)中Integer被看成一個對象,可以進行數(shù)據(jù)轉(zhuǎn)換等操作。
2.判斷下面程序片段輸出的結(jié)果:
Integer num1 = 200;
Integer num2 = 200;
System.out.println("num1==num2: "+(num1==num2));
Integer num3 = 100;
Integer num4 = 100;
System.out.println("num3==num4: "+(num3==num4));
輸出結(jié)果:num1num2:false 和num3num4:true
說明:
首先要明確equal方法與的區(qū)別:
equals() 比較的是兩個對象的值(內(nèi)容)是否相同。
"" 比較的是兩個對象的引用(內(nèi)存地址)是否相同,也用來比較兩個基本數(shù)據(jù)類型的變量值是否相等。
java定義:在自動裝箱時對于值從–128到127之間的值,它們被裝箱為Integer對象后,會存在內(nèi)存中被重用,始終只存在一個對象而如果超過了從–128到127之間的值,被裝箱后的Integer對象并不會被重用,即相當(dāng)于每次裝箱時都新建一個 Integer對象;
總結(jié)
到此這篇關(guān)于Java面向?qū)ο笾b類的文章就介紹到這了,更多相關(guān)Java包裝類內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring boot通過HttpSessionListener監(jiān)聽器統(tǒng)計在線人數(shù)的實現(xiàn)代碼
這篇文章主要介紹了Spring boot通過HttpSessionListener監(jiān)聽器統(tǒng)計在線人數(shù)的實現(xiàn)代碼,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2018-02-02
Spring Boot啟動過程(五)之Springboot內(nèi)嵌Tomcat對象的start教程詳解
這篇文章主要介紹了Spring Boot啟動過程(五)之Springboot內(nèi)嵌Tomcat對象的start的相關(guān)資料,需要的朋友可以參考下2017-04-04
詳解Java對象創(chuàng)建的過程及內(nèi)存布局
今天給大家?guī)淼奈恼率荍ava對象創(chuàng)建的過程及內(nèi)存布局,文中有非常詳細的圖文示例及介紹,需要的朋友可以參考下2021-06-06
springboot+WebMagic+MyBatis爬蟲框架的使用
本文是對spring boot+WebMagic+MyBatis做了整合,使用WebMagic爬取數(shù)據(jù),然后通過MyBatis持久化爬取的數(shù)據(jù)到mysql數(shù)據(jù)庫。具有一定的參考價值,感興趣的可以了解一下2021-08-08
Java的MyBatis框架中實現(xiàn)多表連接查詢和查詢結(jié)果分頁
這篇文章主要介紹了Java的MyBatis框架中實現(xiàn)多表連接查詢和查詢結(jié)果分頁,借助MyBatis框架中帶有的動態(tài)SQL查詢功能可以比普通SQL查詢做到更多,需要的朋友可以參考下2016-04-04
詳解Elasticsearch如何實現(xiàn)簡單的腳本排序
Elasticsearch?是位于?Elastic?Stack?核心的分布式搜索和分析引擎,可以為所有類型的數(shù)據(jù)提供近乎實時的搜索和分析。本文主要介紹了Elasticsearch如何實現(xiàn)簡單的腳本排序,感興趣的可以了解一下2023-01-01

