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ù)選框類(lèi),只能設(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類(lèi)型的新對(duì)象時(shí)。
當(dāng)類(lèi)加載到Java虛擬機(jī)時(shí)。
僅當(dāng)main()方法被執(zhí)行時(shí)
題解:
類(lèi)中靜態(tài)語(yǔ)句塊僅在類(lèi)加載時(shí)被執(zhí)行一次
4、下列哪個(gè)說(shuō)法是正確的()
正確答案: D
ConcurrentHashMap使用synchronized關(guān)鍵字保證線(xiàn)程安全
HashMap實(shí)現(xiàn)了Collction接口
Array.asList方法返回java.util.ArrayList對(duì)象
SimpleDateFormat是線(xiàn)程不安全的
題解:
A. JDK1.8 的 ConcurrentHashMap 采用CAS+Synchronized保證線(xiàn)程安全。數(shù)據(jù)結(jié)構(gòu)跟 jdk1.8 中 HashMap 結(jié)構(gòu)類(lèi)似,都是數(shù)組 + 鏈表(當(dāng)鏈表長(zhǎng)度大于 8 時(shí),鏈表結(jié)構(gòu)轉(zhuǎn)為紅黑二叉樹(shù))結(jié)構(gòu)。 JDK1.7 及以前采用segment的分段鎖機(jī)制實(shí)現(xiàn)線(xiàn)程安全,其中segment繼承自ReentrantLock,因此采用Lock鎖來(lái)保證線(xiàn)程安全。
B.
C.Arrays.asList() 返回 java.util.Arrays.ArrayList 對(duì)象,這里的 ArrayList 是 Arrays 私有的內(nèi)部類(lè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是包裝類(lèi),不是byte(基本數(shù)據(jù)類(lèi)型),因此Byte的默認(rèn)是null,不是0
2.t是一個(gè)引用地址類(lèi)型,在調(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è)類(lèi)可以實(shí)現(xiàn)多個(gè)接口
B:抽象類(lèi)必須有抽象方法
C:protected成員在子類(lèi)可見(jiàn)性可以修改
D:通過(guò)super可以調(diào)用父類(lèi)構(gòu)造函數(shù)
E:final的成員方法實(shí)現(xiàn)中只能讀取類(lèi)的成員變量
F:String是不可修改的,且java運(yùn)行環(huán)境中對(duì)string對(duì)象有一個(gè)對(duì)象池保存
題解:
A對(duì):java類(lèi)單繼承,多實(shí)現(xiàn)
B錯(cuò):被abstract修飾的類(lèi)就是抽象類(lèi),有沒(méi)有抽象方法無(wú)所謂
C錯(cuò):描述有問(wèn)題。protected成員在子類(lèi)的可見(jiàn)性,我最初理解是子類(lèi)(不繼承父類(lèi)protected成員方法)獲取父類(lèi)被protected修飾的成員屬性或方法,可見(jiàn)性是不可能變的,因?yàn)樾揎椃鹥rotected就是描述可見(jiàn)性的。
這道題應(yīng)該是要考察子類(lèi)繼承父類(lèi),并重寫(xiě)父類(lèi)的protected成員方法,該方法的可見(jiàn)性可以修改,這是對(duì)的,因?yàn)樽宇?lèi)繼承父類(lèi)的方法,訪(fǎng)問(wèn)權(quán)限可以相同或往大了改
D對(duì)。
E錯(cuò):final修飾的方法只是不能重寫(xiě),static修飾的方法只能訪(fǎng)問(wèn)類(lèi)的成員變量
F對(duì)。
8、下列哪些情況下會(huì)導(dǎo)致線(xiàn)程中斷或停止運(yùn)行( )
正確答案: A B
InterruptedException異常被捕獲
線(xiàn)程調(diào)用了wait方法
當(dāng)前線(xiàn)程創(chuàng)建了一個(gè)新的線(xiàn)程
高優(yōu)先級(jí)線(xiàn)程進(jìn)入就緒狀態(tài)
題解:
A選項(xiàng)正確,Java中一般通過(guò)interrupt方法中斷線(xiàn)程
B選項(xiàng)正確,線(xiàn)程使用了wait方法,會(huì)強(qiáng)行打斷當(dāng)前操作,進(jìn)入阻塞(暫停)狀態(tài),然后需要notify方法或notifyAll方法才能進(jìn)入就緒狀態(tài)
C選項(xiàng)錯(cuò)誤,新創(chuàng)建的線(xiàn)程不會(huì)搶占時(shí)間片,只有等當(dāng)前線(xiàn)程把時(shí)間片用完,其他線(xiàn)程才有資格拿到時(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ì)象所屬的類(lèi)
在運(yùn)行時(shí)構(gòu)造一個(gè)類(lèi)的對(duì)象
在運(yùn)行時(shí)判斷一個(gè)類(lèi)所具有的成員變量和方法
在運(yùn)行時(shí)調(diào)用一個(gè)對(duì)象的方法
題解:
JAVA反射機(jī)制概念:
JAVA反射機(jī)制是在運(yùn)行狀態(tài)中,對(duì)于任意一個(gè)類(lèi),都能夠知道這個(gè)類(lèi)的所有屬性和方法;對(duì)于任意一個(gè)對(duì)象,都能夠調(diào)用它的任意一個(gè)方法和屬性;這種動(dòng)態(tài)獲取的信息以及動(dòng)態(tài)調(diào)用對(duì)象的方法的功能稱(chēng)為java語(yǔ)言的反射機(jī)制。
Java反射機(jī)制主要提供了以下功能:
1、在運(yùn)行時(shí)判定任意一個(gè)對(duì)象所屬的類(lèi);
2、在運(yùn)行時(shí)構(gòu)造任意一個(gè)類(lèi)的對(duì)象;
3、在運(yùn)行時(shí)判定任意一個(gè)類(lèi)所具有的成員變量和方法;
4、在運(yùn)行時(shí)調(diào)用任意一個(gè)對(duì)象的方法;
5、生成動(dòng)態(tài)代理。
10、CMS垃圾回收器在那些階段是沒(méi)用用戶(hù)線(xiàn)程參與的
正確答案: A C
初始標(biāo)記
并發(fā)標(biāo)記
重新標(biāo)記
并發(fā)清理
題解:
用戶(hù)線(xiàn)程(user-level threads)指不需要內(nèi)核支持而在用戶(hù)程序中實(shí)現(xiàn)的線(xiàn)程,其不依賴(lài)于操作系統(tǒng)核心,應(yīng)用進(jìn)程利用線(xiàn)程庫(kù)提供創(chuàng)建、同步、調(diào)度和管理線(xiàn)程的函數(shù)來(lái)控制用戶(hù)線(xiàn)程。
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è)階段用戶(hù)線(xiàn)程是不會(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-11
Java使用Kaptcha實(shí)現(xiàn)簡(jiǎn)單的驗(yàn)證碼生成器
這篇文章主要為大家詳細(xì)介紹了Java如何使用Kaptcha實(shí)現(xiàn)簡(jiǎn)單的驗(yàn)證碼生成器,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以參考下2024-02-02
Java實(shí)現(xiàn)向數(shù)組里添加元素
這篇文章主要介紹了Java實(shí)現(xiàn)向數(shù)組里添加元素方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11
JVM內(nèi)存區(qū)域劃分相關(guān)原理詳解
這篇文章主要介紹了JVM內(nèi)存區(qū)域劃分相關(guān)原理詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10
Windows環(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-08
Spring 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-06
kafka-console-consumer.sh使用2次grep管道無(wú)法提取消息的解決
這篇文章主要介紹了kafka-console-consumer.sh使用2次grep管道無(wú)法提取消息的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03
Java swing讀取txt文件實(shí)現(xiàn)學(xué)生考試系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了Java swing讀取txt文件實(shí)現(xiàn)學(xué)生考試系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-06-06




