Java日常練習題,每天進步一點點(56)
承蒙各位厚愛,我們一起每天進步一點點?。ㄊ髽诉x中空白處查看答案)
1、下面所示的java代碼,運行時,會產(chǎn)生()類型的異常
int Arry_a[] = new int[10];
System.out.println(Arry_a[10]);
正確答案: D
ArithmeticException
NullPointException
IOException
ArrayIndexOutOfBoundsException
題解:
定義的數(shù)組長度為10,角標即為0-9 訪問數(shù)組角標10會出現(xiàn)數(shù)組角標越界異常 ArithmeticException 算術異常 NullPointException 空指針異常 IOException IO異常 ArrayIndexOutOfBoundsException 數(shù)組下標越界異常
2、關于依賴注入,下列選項中說法錯誤的是()
正確答案: B
依賴注入能夠獨立開發(fā)各組件,然后根據(jù)組件間關系進行組裝
依賴注入使組件之間相互依賴,相互制約
依賴注入提供使用接口編程
依賴注入指對象在使用時動態(tài)注入
題解:
依賴注入的動機就是減少組件之間的耦合度,使開發(fā)更為簡潔
3、子類A繼承父類B, A a = new A(); 則父類B構造函數(shù)、父類B靜態(tài)代碼塊、父類B非靜態(tài)代碼塊、子類A構造函數(shù)、子類A靜態(tài)代碼塊、子類A非靜態(tài)代碼塊 執(zhí)行的先后順序是?
正確答案: C
父類B靜態(tài)代碼塊->父類B構造函數(shù)->子類A靜態(tài)代碼塊->父類B非靜態(tài)代碼塊->子類A構造函數(shù)->子類A非靜態(tài)代碼塊
父類B靜態(tài)代碼塊->父類B構造函數(shù)->父類B非靜態(tài)代碼塊->子類A靜態(tài)代碼塊->子類A構造函數(shù)->子類A非靜態(tài)代碼塊
父類B靜態(tài)代碼塊->子類A靜態(tài)代碼塊->父類B非靜態(tài)代碼塊->父類B構造函數(shù)->子類A非靜態(tài)代碼塊->子類A構造函數(shù)
父類B構造函數(shù)->父類B靜態(tài)代碼塊->父類B非靜態(tài)代碼塊->子類A靜態(tài)代碼塊->子類A構造函數(shù)->子類A非靜態(tài)代碼塊
題解:
會先執(zhí)行靜態(tài)代碼塊,因為靜態(tài)代碼塊是類級別的,是在創(chuàng)建對象之前就執(zhí)行的。因為子類繼承了父類,所以父類的靜態(tài)代碼塊會先執(zhí)行,接著執(zhí)行子類的靜態(tài)代碼塊。
因為構造函數(shù)可能要給動態(tài)代碼塊的一些成員變量賦值,所以必須在這之前先執(zhí)行動態(tài)代碼塊,要不然構造函數(shù)會出現(xiàn)相關的成員屬性無定義。所以會先執(zhí)行動態(tài)代碼塊,在執(zhí)行構造函數(shù)。一般先按父類的執(zhí)行,再按子類的執(zhí)行。
4、以下代碼在編譯和運行過程中會出現(xiàn)什么情況
public class TestDemo{
private int count;
public static void main(String[] args) {
TestDemo test=new TestDemo(88);
System.out.println(test.count);
}
TestDemo(int a) {
count=a;
}
}
正確答案: A
編譯運行通過,輸出結果是88
編譯時錯誤,count變量定義的是私有變量
編譯時錯誤,System.out.println方法被調(diào)用時test沒有被初始化
編譯和執(zhí)行時沒有輸出結果
題解:
private是私有變量,只能用于當前類中,題目中的main方法也位于當前類,所以可以正確輸出
5、Web程序中,當前用戶上下文信息應該保存在下面哪個對象中()
正確答案: C
page
request
session
Application
題解:
當前用戶上下文信息:session
appication:當前應用
pageContext:當前頁面
request:當前請求
6、下面哪個不屬于HttpServletResponse接口完成的功能?
正確答案: C
設置HTTP頭標
設置cookie
讀取路徑信息
輸出返回數(shù)據(jù)
題解:
request讀取路徑信息
7、以下說法錯誤的是()
正確答案: D
虛擬機中沒有泛型,只有普通類和普通方法
所有泛型類的類型參數(shù)在編譯時都會被擦除
創(chuàng)建泛型對象時請指明類型,讓編譯器盡早的做參數(shù)檢查
泛型的類型擦除機制意味著不能在運行時動態(tài)獲取List中T的實際類型
題解:
1、創(chuàng)建泛型對象的時候,一定要指出類型變量T的具體類型。爭取讓編譯器檢查出錯誤,而不是留給JVM運行的時候拋出類不匹配的異常。 2、JVM如何理解泛型概念 —— 類型擦除。事實上,JVM并不知道泛型,所有的泛型在編譯階段就已經(jīng)被處理成了普通類和方法。 處理方法很簡單,我們叫做類型變量T的擦除(erased) 。 總結:泛型代碼與JVM ① 虛擬機中沒有泛型,只有普通類和方法。 ② 在編譯階段,所有泛型類的類型參數(shù)都會被Object或者它們的限定邊界來替換。(類型擦除) ③ 在繼承泛型類型的時候,橋方法的合成是為了避免類型變量擦除所帶來的多態(tài)災難。 無論我們?nèi)绾味x一個泛型類型,相應的都會有一個原始類型被自動提供。原始類型的名字就是擦除類型參數(shù)的泛型類型的名字。
8、類B從類A派生,則類B可以訪問類A中的( )成員?
正確答案: A C
public成員
private成員
protected成員
所有數(shù)據(jù)成員
所有函數(shù)成員
題解:
private成員只能在當前類中訪問,派生類可以訪問父類的public和protected屬性成員
9、下列關于系列化和反序列化描述正確的是:
正確答案: A B
序列化是將數(shù)據(jù)轉為n個 byte序列的過程
反序列化是將n個 byte轉換為數(shù)據(jù)的過程
將類型int轉換為4 byte是反序列化過程
將8個字節(jié)轉換為long類型的數(shù)據(jù)為序列化過程
題解:
序列化:將數(shù)據(jù)結構轉換稱為二進制數(shù)據(jù)流或者文本流的過程。序列化后的數(shù)據(jù)方便在網(wǎng)絡上傳輸和在硬盤上存儲。
反序列化:與序列化相反,是將二進制數(shù)據(jù)流或者文本流轉換稱為易于處理和閱讀的數(shù)據(jù)結構的過程。
本質(zhì)其實還是一種協(xié)議,一種數(shù)據(jù)格式,方便數(shù)據(jù)的存儲和傳輸。
10、對 Map 的用法,正確的有:
正確答案: C D
new java.util.Map().put(“key” , “value”) ;
new java.util.SortedMap().put(“key” , “value”) ;
new java.util.HashMap().put( null , null ) ;
new java.util.TreeMap().put( 0 , null ) ;
題解:
考察的是Map接口實現(xiàn)類的創(chuàng)建對象以及對象類型包含的方法。
A選項Map屬于接口類型,不可以new的方式創(chuàng)建對象。所以A錯誤。
B選項SortedMap屬于接口類型,不可以new的方式創(chuàng)建對象。所以B錯誤。
C選項HashMap基于哈希表實現(xiàn)Map接口的類,并允許null的值和null鍵。
D選項TreeMap通過紅黑樹實現(xiàn)Map接口的類,key不可以為null,會報NullPointerException異常,value可以為null。
答案匯總:
1、正確答案: D
2、正確答案: B
3、正確答案: C
4、正確答案: A
5、正確答案: C
6、正確答案: C
7、正確答案: D
8、正確答案: A C
9、正確答案: A B
10、正確答案: C D
總結
本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關注腳本之家的更多內(nèi)容!
相關文章
Serializable接口的作用_動力節(jié)點Java學院整理
這篇文章主要為大家詳細介紹了java中Serializable接口的作用,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05
使用Spring-Retry解決Spring Boot應用程序中的重試問題
重試的使用場景比較多,比如調(diào)用遠程服務時,由于網(wǎng)絡或者服務端響應慢導致調(diào)用超時,此時可以多重試幾次。用定時任務也可以實現(xiàn)重試的效果,但比較麻煩,用Spring Retry的話一個注解搞定所有,感興趣的可以了解一下2023-04-04
SpringMVC框架整合Junit進行單元測試(案例詳解)
本文詳細介紹在SpringMVC任何使用Junit框架。首先介紹了如何引入依賴,接著介紹了編寫一個測試基類,并且對其中涉及的各個注解做了一個詳細說明,感興趣的朋友跟隨小編一起看看吧2021-05-05

