大家經(jīng)常復(fù)習(xí)的一些Java基礎(chǔ)試題及答案

大家經(jīng)常復(fù)習(xí)的一些Java基礎(chǔ)試題及答案

長(zhǎng)沙中公優(yōu)就業(yè)      2022-03-14 05:40:01     11

大家經(jīng)常復(fù)習(xí)的一些Java基礎(chǔ)試題及答案,八種基本數(shù)據(jù)類(lèi)型的大小,以及他們的封裝類(lèi)。(1)八種基本數(shù)據(jù)類(lèi)型和封裝類(lèi)(2)自動(dòng)裝箱和自動(dòng)拆箱什么是自動(dòng)裝箱拆箱基本數(shù)據(jù)

課程價(jià)格 請(qǐng)咨詢(xún)

上課時(shí)段: 授課校區(qū):

詳細(xì)介紹

八種基本數(shù)據(jù)類(lèi)型的大小,以及他們的封裝類(lèi)。

(1)八種基本數(shù)據(jù)類(lèi)型和封裝類(lèi)

(2)自動(dòng)裝箱和自動(dòng)拆箱

什么是自動(dòng)裝箱拆箱

基本數(shù)據(jù)類(lèi)型的自動(dòng)裝箱(autoboxing)、拆箱(unboxing)是自J2SE 5.0開(kāi)始提供的功能。

一般我們要?jiǎng)?chuàng)建一個(gè)類(lèi)的對(duì)象實(shí)例的時(shí)候,我們會(huì)這樣:

Class a=new Class(parameter);

當(dāng)我們創(chuàng)建一個(gè)Integer對(duì)象時(shí),卻可以這樣:

Integer i=100;(注意:不是int i=100;)

實(shí)際上,執(zhí)行上面那句代碼的時(shí)候,系統(tǒng)為我們執(zhí)行了:Integer i=Integer.valueOf(100);

此即基本數(shù)據(jù)類(lèi)型的自動(dòng)裝箱功能。

基本數(shù)據(jù)類(lèi)型與對(duì)象的差別

基本數(shù)據(jù)類(lèi)型不是對(duì)象,也就是使用int、double、boolean等定義的變量、常量。

基本數(shù)據(jù)類(lèi)型沒(méi)有可調(diào)用的方法。

eg:int t=1;t.后面是沒(méi)有方法滴。

Integer t=1;t.后面就有很多方法可讓你調(diào)用了。

什么時(shí)候自動(dòng)裝箱

例如:Integer i=100;

相當(dāng)于編譯器自動(dòng)為您作以下的語(yǔ)法編譯:Integer i=Integer.valueOf(100);

什么時(shí)候自動(dòng)拆箱

自動(dòng)拆箱(unboxing),也就是將對(duì)象中的基本數(shù)據(jù)從對(duì)象中自動(dòng)取出。如下可實(shí)現(xiàn)自動(dòng)拆箱:

Integer i=10;//裝箱

int t=i;//拆箱,實(shí)際上執(zhí)行了int t=i.intValue();

在進(jìn)行運(yùn)算時(shí),也可以進(jìn)行拆箱。

Integer i=10;

System.out.println(i++);

Integer的自動(dòng)裝箱

//在-128~127 之外的數(shù)?Integer i1 =200;???Integer i2 =200;? ? ? ? ???System.out.println("i1==i2: "+(i1==i2));? ? ? ? ? ? ? ? ? ??// 在-128~127 之內(nèi)的數(shù)?Integer i3 =100;???Integer i4 =100;???System.out.println("i3==i4: "+(i3==i4));輸出的結(jié)果是:i1==i2: falsei3==i4: true

說(shuō)明:

equals() 比較的是兩個(gè)對(duì)象的值(內(nèi)容)是否相同。

"==" 比較的是兩個(gè)對(duì)象的引用(內(nèi)存地址)是否相同,也用來(lái)比較兩個(gè)基本數(shù)據(jù)類(lèi)型的變量值是否相等。

前面說(shuō)過(guò),int 的自動(dòng)裝箱,是系統(tǒng)執(zhí)行了 Integer.valueOf(int i),先看看Integer.java的源碼:

public static Integer valueOf(int i) {? ?if(i >= -128 && i <= IntegerCache.high) // 沒(méi)有設(shè)置的話(huà),IngegerCache.high 默認(rèn)是127? ? ? ?return IntegerCache.cache[i + 128];? ?else? ? ? ?return new Integer(i);}

對(duì)于–128到127(默認(rèn)是127)之間的值,Integer.valueOf(int i)返回的是緩存的Integer對(duì)象!?。。ú⒉皇切陆▽?duì)象)

所以范例中,i3與i4實(shí)際上是指向同一個(gè)對(duì)象。

而其他值,執(zhí)行Integer.valueOf(int i)返回的是一個(gè)新建的Integer對(duì)象,所以范例中,i1與i2指向的是不同的對(duì)象。

當(dāng)然,當(dāng)不使用自動(dòng)裝箱功能的時(shí)候,情況與普通類(lèi)對(duì)象一樣,請(qǐng)看下例:

Integer i3 =new Integer(100);?Integer i4 =new Integer(100);?System.out.println("i3==i4: "+(i3==i4));//顯示false

以上就是長(zhǎng)沙中公優(yōu)就業(yè)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“大家經(jīng)常復(fù)習(xí)的一些Java基礎(chǔ)試題及答案”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問(wèn),請(qǐng)?jiān)诰€(xiàn)咨詢(xún),有專(zhuān)業(yè)老師隨時(shí)為你服務(wù)。

Java基礎(chǔ)面試題

培訓(xùn)啦提醒您:交易時(shí)請(qǐng)核實(shí)對(duì)方資質(zhì),對(duì)于過(guò)大宣傳或承諾需謹(jǐn)慎!任何要求預(yù)付定金、匯款等方式均存在風(fēng)險(xiǎn),謹(jǐn)防上當(dāng)。