Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(24)
承蒙各位厚愛(ài),我們一起每天進(jìn)步一點(diǎn)點(diǎn)?。ㄊ髽?biāo)選中空白處查看答案)
1、Java 語(yǔ)言中創(chuàng)建一個(gè)對(duì)象使用的關(guān)鍵字是()
正確答案: C
class
interface
new
create
題解:
送分題,程序員沒(méi)有對(duì)象就new一個(gè)
2、創(chuàng)建一個(gè)標(biāo)識(shí)有“關(guān)閉”標(biāo)簽的語(yǔ)句是 ( ) 。
正確答案: B
TextField b = new TextField(“關(guān)閉”);
Label b = new Label(“關(guān)閉”);
Checkbox b = new Checkbox(“關(guān)閉”);
Button b = new Button(“關(guān)閉”);
題解:
選項(xiàng)A錯(cuò)誤,創(chuàng)建的是一個(gè)初始顯示為“關(guān)閉”的文本框
選項(xiàng)B正確,創(chuàng)建的是一個(gè)標(biāo)識(shí)有“關(guān)閉”的標(biāo)簽
選項(xiàng)C錯(cuò)誤,Checkbox為復(fù)選框類,只能設(shè)定是否含標(biāo)簽
選項(xiàng)D錯(cuò)誤,創(chuàng)建的是一個(gè)標(biāo)記為“關(guān)閉”的按鈕
3、When is the text “Hi there”displayed?
public class StaticTest { static { System.out.println(“Hi there”); } public void print() { System.out.println(“Hello”); } public static void main(String args[]) { StaticTest st1 = new StaticTest(); st1.print(); StaticTest st2 = new StaticTest(); st2.print(); } }
正確答案: C
Never.
Each time a new object of type StaticTest is created.
Once when the class is loaded into the Java virtual machine.
Only when the main() method is executed.
翻譯:
“Hi there”是什么時(shí)候顯示的?
從來(lái)沒(méi)有。
每次創(chuàng)建StaticTest類型的新對(duì)象時(shí)。
當(dāng)類加載到Java虛擬機(jī)時(shí)。
僅當(dāng)main()方法被執(zhí)行時(shí)
題解:
類中靜態(tài)語(yǔ)句塊僅在類加載時(shí)被執(zhí)行一次
4、下列哪個(gè)說(shuō)法是正確的()
正確答案: D
ConcurrentHashMap使用synchronized關(guān)鍵字保證線程安全
HashMap實(shí)現(xiàn)了Collction接口
Array.asList方法返回java.util.ArrayList對(duì)象
SimpleDateFormat是線程不安全的
題解:
A. JDK1.8 的 ConcurrentHashMap 采用CAS+Synchronized保證線程安全。數(shù)據(jù)結(jié)構(gòu)跟 jdk1.8 中 HashMap 結(jié)構(gòu)類似,都是數(shù)組 + 鏈表(當(dāng)鏈表長(zhǎng)度大于 8 時(shí),鏈表結(jié)構(gòu)轉(zhuǎn)為紅黑二叉樹(shù))結(jié)構(gòu)。 JDK1.7 及以前采用segment的分段鎖機(jī)制實(shí)現(xiàn)線程安全,其中segment繼承自ReentrantLock,因此采用Lock鎖來(lái)保證線程安全。
B.
C.Arrays.asList() 返回 java.util.Arrays.ArrayList 對(duì)象,這里的 ArrayList 是 Arrays 私有的內(nèi)部類
D.
5、給出以下代碼,請(qǐng)給出結(jié)果.
class Two{ Byte x; } class PassO{ public static void main(String[] args){ PassO p=new PassO(); p.start(); } void start(){ Two t=new Two(); System.out.print(t.x+””); Two t2=fix(t); System.out.print(t.x+” ” +t2.x); } Two fix(Two tt){ tt.x=42; return tt; } }
正確答案: B
null null 42
null 42 42
0 0 42
0 42 42
An exception is thrown at runtime
Compilation
題解:
1.注意第二行代碼,Byte x;Byte是包裝類,不是byte(基本數(shù)據(jù)類型),因此Byte的默認(rèn)是null,不是0
2.t是一個(gè)引用地址類型,在調(diào)用fit(Two tt)函數(shù)是,是一個(gè)實(shí)參到形參的傳值,也就是把t的地址賦值給了tt,但是都是指向堆內(nèi)存中新建的對(duì)象,因此當(dāng)對(duì)tt.x和t.x指向是相同的。因此t.x也是42
3.Two t2=fit(t);fit函數(shù)返回的還是一個(gè)引用地址,這句代碼相當(dāng)于把t(函數(shù)里面返回的是tt)的地址賦值給了t2,因此t2.x也是42
6、給定以下JAVA代碼,這段代碼運(yùn)行后輸出的結(jié)果是()
public class Test { public static int aMethod(int i)throws Exception { try{ return i/10; } catch (Exception ex) { throw new Exception("exception in a aMethod"); }finally{ System.out.printf("finally"); } } public static void main(String[] args){ try { aMethod(0); } catch (Exception ex) { System.out.printf("exception in main"); } System.out.printf("finished"); } }
正確答案: B
exception in main finished
finally finished
exception in main finally
finally exception in main finally
題解:
具體執(zhí)行過(guò)程:
1、先進(jìn)入main函數(shù),進(jìn)入try塊調(diào)用aMethod(0)方法;
2、執(zhí)行aMethod()方法的try塊,i/10可以正確執(zhí)行,故并未拋出異常,catch塊不執(zhí)行,而需要執(zhí)行finally(該塊任何時(shí)候都要執(zhí)行),故打印finally;
3、回到main函數(shù),由于aMethod()調(diào)用成功,因此main函數(shù)的catch塊同樣不執(zhí)行,順序執(zhí)行finally塊,打印finished
因此,最終的輸出結(jié)果就是:finally finished
7、面有關(guān)Java的說(shuō)法正確的是( )
正確答案: A C D F
A:一個(gè)類可以實(shí)現(xiàn)多個(gè)接口
B:抽象類必須有抽象方法
C:protected成員在子類可見(jiàn)性可以修改
D:通過(guò)super可以調(diào)用父類構(gòu)造函數(shù)
E:final的成員方法實(shí)現(xiàn)中只能讀取類的成員變量
F:String是不可修改的,且java運(yùn)行環(huán)境中對(duì)string對(duì)象有一個(gè)對(duì)象池保存
題解:
A對(duì):java類單繼承,多實(shí)現(xiàn)
B錯(cuò):被abstract修飾的類就是抽象類,有沒(méi)有抽象方法無(wú)所謂
C錯(cuò):描述有問(wèn)題。protected成員在子類的可見(jiàn)性,我最初理解是子類(不繼承父類protected成員方法)獲取父類被protected修飾的成員屬性或方法,可見(jiàn)性是不可能變的,因?yàn)樾揎椃鹥rotected就是描述可見(jiàn)性的。
這道題應(yīng)該是要考察子類繼承父類,并重寫父類的protected成員方法,該方法的可見(jiàn)性可以修改,這是對(duì)的,因?yàn)樽宇惱^承父類的方法,訪問(wèn)權(quán)限可以相同或往大了改
D對(duì)。
E錯(cuò):final修飾的方法只是不能重寫,static修飾的方法只能訪問(wèn)類的成員變量
F對(duì)。
8、下列哪些情況下會(huì)導(dǎo)致線程中斷或停止運(yùn)行( )
正確答案: A B
InterruptedException異常被捕獲
線程調(diào)用了wait方法
當(dāng)前線程創(chuàng)建了一個(gè)新的線程
高優(yōu)先級(jí)線程進(jìn)入就緒狀態(tài)
題解:
A選項(xiàng)正確,Java中一般通過(guò)interrupt方法中斷線程
B選項(xiàng)正確,線程使用了wait方法,會(huì)強(qiáng)行打斷當(dāng)前操作,進(jìn)入阻塞(暫停)狀態(tài),然后需要notify方法或notifyAll方法才能進(jìn)入就緒狀態(tài)
C選項(xiàng)錯(cuò)誤,新創(chuàng)建的線程不會(huì)搶占時(shí)間片,只有等當(dāng)前線程把時(shí)間片用完,其他線程才有資格拿到時(shí)間片去執(zhí)行。
D選項(xiàng)錯(cuò)誤,調(diào)度算法未必是剝奪式的,而準(zhǔn)備就緒但是還沒(méi)有獲得CPU,它的權(quán)限更高只能說(shuō)明它獲得CPU被執(zhí)行的幾率更大而已
9、JAVA反射機(jī)制主要提供了以下哪些功能?
正確答案: A B C D
在運(yùn)行時(shí)判斷一個(gè)對(duì)象所屬的類
在運(yùn)行時(shí)構(gòu)造一個(gè)類的對(duì)象
在運(yùn)行時(shí)判斷一個(gè)類所具有的成員變量和方法
在運(yùn)行時(shí)調(diào)用一個(gè)對(duì)象的方法
題解:
JAVA反射機(jī)制概念:
JAVA反射機(jī)制是在運(yùn)行狀態(tài)中,對(duì)于任意一個(gè)類,都能夠知道這個(gè)類的所有屬性和方法;對(duì)于任意一個(gè)對(duì)象,都能夠調(diào)用它的任意一個(gè)方法和屬性;這種動(dòng)態(tài)獲取的信息以及動(dòng)態(tài)調(diào)用對(duì)象的方法的功能稱為java語(yǔ)言的反射機(jī)制。
Java反射機(jī)制主要提供了以下功能:
1、在運(yùn)行時(shí)判定任意一個(gè)對(duì)象所屬的類;
2、在運(yùn)行時(shí)構(gòu)造任意一個(gè)類的對(duì)象;
3、在運(yùn)行時(shí)判定任意一個(gè)類所具有的成員變量和方法;
4、在運(yùn)行時(shí)調(diào)用任意一個(gè)對(duì)象的方法;
5、生成動(dòng)態(tài)代理。
10、CMS垃圾回收器在那些階段是沒(méi)用用戶線程參與的
正確答案: A C
初始標(biāo)記
并發(fā)標(biāo)記
重新標(biāo)記
并發(fā)清理
題解:
用戶線程(user-level threads)指不需要內(nèi)核支持而在用戶程序中實(shí)現(xiàn)的線程,其不依賴于操作系統(tǒng)核心,應(yīng)用進(jìn)程利用線程庫(kù)提供創(chuàng)建、同步、調(diào)度和管理線程的函數(shù)來(lái)控制用戶線程。
CMS的GC過(guò)程有6個(gè)階段(4個(gè)并發(fā),2個(gè)暫停其它應(yīng)用程序)
1.初次標(biāo)記(STW initial mark)
2.并發(fā)標(biāo)記(Concurrent marking)
3.并發(fā)可中斷預(yù)清理(Concurrent precleaning)
4.最終重新標(biāo)記(STW remark)
5.并發(fā)清理(Concurrent sweeping)
6.并發(fā)重置(Concurrent reset)
在初次標(biāo)記,重新標(biāo)志的時(shí)候,要求我們暫停其它應(yīng)用程序,那么這兩個(gè)階段用戶線程是不會(huì)參與的
答案匯總:
1、正確答案: C
2、正確答案: B
3、正確答案: C
4、正確答案: D
5、正確答案: B
6、正確答案: B
7、正確答案: A C D F
8、正確答案: A B
9、正確答案: A B C D
10、正確答案: A C
總結(jié)
本篇文章就到這里了,希望能給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
springboot實(shí)現(xiàn)熱部署操作方法
這篇文章主要介紹了springboot實(shí)現(xiàn)熱部署操作方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11Java使用Kaptcha實(shí)現(xiàn)簡(jiǎn)單的驗(yàn)證碼生成器
這篇文章主要為大家詳細(xì)介紹了Java如何使用Kaptcha實(shí)現(xiàn)簡(jiǎn)單的驗(yàn)證碼生成器,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以參考下2024-02-02Java實(shí)現(xiàn)向數(shù)組里添加元素
這篇文章主要介紹了Java實(shí)現(xiàn)向數(shù)組里添加元素方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11JVM內(nèi)存區(qū)域劃分相關(guān)原理詳解
這篇文章主要介紹了JVM內(nèi)存區(qū)域劃分相關(guān)原理詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10Windows環(huán)境使用bat腳本啟動(dòng)Java服務(wù)的過(guò)程
Java項(xiàng)目一般會(huì)被打包成jar后啟動(dòng),在windows系統(tǒng)中可以通過(guò)終端窗口cmd啟動(dòng)jar包,即在jar包所在的目錄中打開(kāi)cmd,或在cmd中進(jìn)入到j(luò)ar包目錄,這篇文章主要介紹了Windows環(huán)境使用bat腳本啟動(dòng)Java服務(wù),需要的朋友可以參考下2023-08-08Spring boot如何快速的配置多個(gè)Redis數(shù)據(jù)源
這篇文章主要介紹了Spring boot如何快速的配置多個(gè)Redis數(shù)據(jù)源,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06kafka-console-consumer.sh使用2次grep管道無(wú)法提取消息的解決
這篇文章主要介紹了kafka-console-consumer.sh使用2次grep管道無(wú)法提取消息的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03Java swing讀取txt文件實(shí)現(xiàn)學(xué)生考試系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了Java swing讀取txt文件實(shí)現(xiàn)學(xué)生考試系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-06-06