Java日常練習(xí)題,每天進步一點點(22)
承蒙各位厚愛,我們一起每天進步一點點?。ㄊ髽诉x中空白處查看答案)
1、有以下代碼片段:
String str1=“hello”;
String str2=“he”+ new String(“l(fā)lo”);
System.out.println(str1==str2);
請問輸出的結(jié)果是:
正確答案: D
true
都不對
null
false
題解:
String str1=“hello”; 這樣創(chuàng)建字符串是存在于常量池中
String str2=new String(“hello”); str2存在于堆中,
==是驗證兩個對象是否是一個(內(nèi)存地址是否相同),所以是false
用+拼接字符串時會創(chuàng)建一個新對象再返回。
2、HashMap的數(shù)據(jù)結(jié)構(gòu)是怎樣的?
正確答案: C
數(shù)組
鏈表
數(shù)組+鏈表
二叉樹
題解:
HashMap 由數(shù)組+鏈表組成的,數(shù)組是 HashMap 的主體,鏈表則是主要為了解決哈希沖突而存在的
HashMap內(nèi)部包含了一個默認大小為 16 Entry 類型的數(shù)組 table,其中每個Entry 是一個鏈表,當鏈表長度大于等于 8 時會將鏈表轉(zhuǎn)換為紅黑樹。
3、關(guān)于下面的程序,說法正確的是:
class StaticStuff { static int x = 10; static { x += 5; } public static void main(String args[]) { System.out.println(“x = ” + StaticStuff .x); } static {x /= 3; } }
正確答案: D
第5行和12行不能編譯,因為該方法沒有方法名和返回值。
第12 行不能編譯,因為只能有一個static初始化塊。
代碼編譯并執(zhí)行,輸出結(jié)果x = 10.
代碼編譯并執(zhí)行,輸出結(jié)果 x = 5.
代碼編譯并執(zhí)行,輸出結(jié)果 x = 15.
題解:
第5、12行屬于static修飾的靜態(tài)代碼塊。所以A、B說法錯誤。
靜態(tài)代碼塊以及靜態(tài)變量自上而下的順序依次隨著類加載而執(zhí)行,所以依據(jù)題目的變量初始化:
x初始為10
x+5賦值x,結(jié)果為15
x/3賦值給x,結(jié)果為5
4、枚舉(enum)屬于原始數(shù)據(jù)類型(primitive type)。
正確答案: B
正確
錯誤
題解:
在Java中,變量有兩種類型,一種是原始類型,一種是引用類型。
原始類型一共有8種,它們分別是char,boolean,byte,short,int,long,float,double。在Java API中,有它們對應(yīng)的包裝類,分別是(首字母大寫)Character,Boolean,Byte,Short,Integer,Long,Float,Double(char,int的變化稍微大點)。
JAVA JVM對于不同的原始類型會分配不同的存儲空間,具體分配如下:
byte : 1個字節(jié) 8位
最大值: 127 (有符號)
short : 2個字節(jié) 16位 32767
int : 4個字節(jié) 32位 2147483647
long: 8個字節(jié) 64位 9223372036854775807
float: 4個字節(jié) 32位 3.4028235E38
double:8個字節(jié) 64位 1.7976931348623157E308
枚舉(enum)類型是Java 5新增的特性,它是一種新的類型,允許用常量來表示特定的數(shù)據(jù)片斷,而且全部都以類型安全的形式來表示,是特殊的類,可以擁有成員變量和方法。
5、如下代碼的輸出是
package Test; public class Test { private static void test(int[] arr) { for (int i = 0; i < arr.length; i++) { try { if (arr[i] % 2 == 0) { throw new NullPointerException(); } else { System.out.print(i); } } finally { System.out.print("e"); } } } public static void main(String[]args) { try { test(new int[] {0, 1, 2, 3, 4, 5}); } catch (Exception e) { System.out.print("E"); } } }
正確答案: B
編譯出錯
eE
Ee
eE1eE3eE5
Ee1Ee3Ee5
題解:
會先進到test(new int[] {0, 1, 2, 3, 4, 5});這里,進入test方法,然后if成立,throw new NullPointerException();但是此時并不會立馬返回,會先把test方法中的finally執(zhí)行,輸出e然后回到main進到catch中輸出E,所以輸出eE
6、設(shè)有下面兩個賦值語句:
a = Integer.parseInt(“1024”);
b = Integer.valueOf(“1024”).intValue();
下述說法正確的是()
正確答案: D
a是整數(shù)類型變量,b是整數(shù)類對象。
a是整數(shù)類對象,b是整數(shù)類型變量。
a和b都是整數(shù)類對象并且它們的值相等。
a和b都是整數(shù)類型變量并且它們的值相等。
題解:
Integer對象的方法
Integer.parseInt("");是將字符串類型轉(zhuǎn)換為int的基礎(chǔ)數(shù)據(jù)類型
Integer.valueOf("")是將字符串類型數(shù)據(jù)轉(zhuǎn)換為Integer對象
Integer.intValue();是將Integer對象中的數(shù)據(jù)取出,返回一個基礎(chǔ)數(shù)據(jù)類型int
在源碼中這兩個方法返回的都是int 也就是說都是整數(shù)類型變量。所以應(yīng)該選D
7、關(guān)于Java語言描述正確的是? ( )
正確答案: B
java和C++都保留了指針
java和C++都有三個特征:封裝、繼承和多態(tài)
java的垃圾回收機制是指程序結(jié)束時系統(tǒng)自動回收內(nèi)存
以上說法都不正確
題解:
送分題
A:Java沒有指針,只有引用。
B:c是面向過程,java和c++都是面向?qū)ο?,面向?qū)ο蟮娜筇卣魇牵悍庋b、繼承、多態(tài)。
C:并不是程序結(jié)束的時候進行GC,GC的時間是不確定的,且GC的過程需要經(jīng)過可達性分析,一個對象只有被標記兩次才會被GC。
下圖是一個對象被GC的全過程。
8、Integer i = 42;
Long l = 42l;
Double d = 42.0;
下面為true的是
正確答案: G
A:(i == l)
B:(i == d)
C:(l == d)
D:i.equals(d)
E:d.equals(l)
F:i.equals(l)
G:l.equals(42L)
題解:
ABC3 個選項很明顯,不同類型引用的 == 比較,會出現(xiàn)編譯錯誤,不能比較。
DEF 調(diào)用 equals 方法,因為此方法先是比較類型,而 i , d , l 是不同的類型,所以返回假。
選項 G ,會自動裝箱,將 42L 裝箱成 Long 類型,所以調(diào)用 equals 方法時,類型相同,且值也相同,因此返回真。
9、關(guān)于equals和hashCode描述正確的是 ()
正確答案: A B C
兩個obj,如果equals()相等,hashCode()一定相等(符合代碼規(guī)范的情況下)
兩個obj,如果hashCode()相等,equals()不一定相等
兩個不同的obj, hashCode()可能相等
其他都不對
題解:
hashCode()的存在是為了查找的快捷性,用于在散列存儲結(jié)構(gòu)中確定對象的存儲地址
如果兩個對象 equals相等,則 hashCode()也一定相等
如果 equals方法被重寫,則 hashCode()也應(yīng)該被重寫
如果兩個對象的 hashCode()相等, equals()方法不一定相等
equals方法沒有重寫,比較的就是應(yīng)用類型的變量所指向的對象的地址
10、有關(guān)finally語句塊說法正確的是( )
正確答案: A B C
不管catch是否捕獲異常,finally語句塊都是要被執(zhí)行的
在try語句塊或catch語句塊中執(zhí)行到System.exit(0)直接退出程序
finally塊中的return語句會覆蓋try塊中的return返回
finally 語句塊在 catch語句塊中的return語句之前執(zhí)行
題解:
D不是return之前,是return執(zhí)行完成之前,return表達式的結(jié)果會暫時保存起來,不會被改變
答案匯總:
1、正確答案: D
2、正確答案: C
3、正確答案: D
4、正確答案: B
5、正確答案: B
6、正確答案: D
7、正確答案: B
8、正確答案: G
9、正確答案: A B C
10、正確答案: A B C
總結(jié)
本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
基于Mybatis Plus實現(xiàn)多表分頁查詢的示例代碼
這篇文章主要介紹了基于Mybatis Plus實現(xiàn)多表分頁查詢的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12Springboot獲取文件內(nèi)容如何將MultipartFile轉(zhuǎn)File
本文給大家介紹Springboot獲取文件內(nèi)容,將MultipartFile轉(zhuǎn)File方法,本文結(jié)合示例代碼給大家介紹的非常詳細,感興趣的朋友一起看看吧2024-01-01SpringBoot Session共享實現(xiàn)圖解
這篇文章主要介紹了SpringBoot Session共享實現(xiàn)圖解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-01-01