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)該是要考察子類繼承父類,并重寫(xiě)父類的protected成員方法,該方法的可見(jiàn)性可以修改,這是對(duì)的,因?yàn)樽宇惱^承父類的方法,訪問(wèn)權(quán)限可以相同或往大了改
D對(duì)。
E錯(cuò):final修飾的方法只是不能重寫(xiě),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)文章
SWT(JFace)體驗(yàn)之GridLayout布局
GridLayout 布局的功能非常強(qiáng)大,也是筆者常用的一種布局方式。GridLayout是網(wǎng)格式布局,它把父組件分成一個(gè)表格,默認(rèn)情況下每個(gè)子組件占據(jù)一個(gè)單元格的空間,每個(gè)子組件按添加到父組件的順序排列在表格中。2009-06-06
小程序與后端Java接口交互實(shí)現(xiàn)HelloWorld入門(mén)
本文主要介紹了小程序與后端Java接口交互實(shí)現(xiàn)HelloWorld入門(mén) ,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-07-07
關(guān)于try 和 throw 簡(jiǎn)單使用示例
每過(guò)一段時(shí)間,就總是會(huì)對(duì)try有點(diǎn)生疏,特別寫(xiě)了個(gè)程序來(lái)測(cè)試以下,有時(shí)候 throw是底層拋出來(lái)的,你不處理,默認(rèn)就throw了2013-08-08
Spring Boot與RabbitMQ結(jié)合實(shí)現(xiàn)延遲隊(duì)列的示例
本篇文章主要介紹了Spring Boot與RabbitMQ結(jié)合實(shí)現(xiàn)延遲隊(duì)列的示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11
JavaMail實(shí)現(xiàn)發(fā)送郵件功能
這篇文章主要為大家詳細(xì)介紹了JavaMail實(shí)現(xiàn)發(fā)送郵件功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08
Java中String類getBytes()方法詳解與完整實(shí)例
這篇文章主要給大家介紹了關(guān)于Java中String類getBytes()方法詳解與完整實(shí)例的相關(guān)資料,getBytes()是Java編程語(yǔ)言中將一個(gè)字符串轉(zhuǎn)化為一個(gè)字節(jié)數(shù)組byte[]的方法,需要的朋友可以參考下2023-10-10
Java中LinkedList的模擬實(shí)現(xiàn)
本文主要介紹了Java中LinkedList的模擬實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06
SpringBoot淺析安全管理之基于數(shù)據(jù)庫(kù)認(rèn)證
在真實(shí)的項(xiàng)目中,用戶的基本信息以及角色等都存儲(chǔ)在數(shù)據(jù)庫(kù)中,因此需要從數(shù)據(jù)庫(kù)中獲取數(shù)據(jù)進(jìn)行認(rèn)證和授權(quán)2022-08-08




