Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(63)
承蒙各位厚愛(ài),我們一起每天進(jìn)步一點(diǎn)點(diǎn)?。ㄊ髽?biāo)選中空白處查看答案)
1、Java Application 源程序的主類(lèi)是指包含有( )方法的類(lèi)。
正確答案:A
A public static void main方法
B toString方法
C init方法
D actionPerfromed方法
題解:
1、java程序種類(lèi): 1.內(nèi)嵌于web文件中,有瀏覽器觀看的applet 2.可獨(dú)立運(yùn)行的application 3.服務(wù)器端的servlets
2、 一個(gè)類(lèi)的內(nèi)部可以有多個(gè)方法名為main的方法啊,是有定義為 public static void的main方法才是主類(lèi)吧
3、 已經(jīng)看了解釋
2、如果定義一種表達(dá)式結(jié)構(gòu):(+ 6 3)的值為9,(- 6 3)的值為3,( * 6 3)的值為18,( / 6 3)的值為2;那么對(duì)于表達(dá)式( * (- 16 (*3 2 2 )) (+ 5 (/ 6 (- 5 3))))輸出的結(jié)果為_(kāi)___。
正確答案:D
A 44
B 40
C 40
D 32
E 24
F 21
題解:
1、 這個(gè)和學(xué)過(guò)數(shù)據(jù)結(jié)構(gòu)沒(méi)有太大關(guān)系,當(dāng)然做過(guò)這類(lèi)題的人一瞬間就懂了,我數(shù)據(jù)結(jié)構(gòu)已經(jīng)很多年沒(méi)看了。有的人之所以沒(méi)看懂,我也是看了好久才明白,是因?yàn)闆](méi)看懂題目的邏輯關(guān)系。下面我來(lái)通俗的講一下: 題目中規(guī)定(+6 3)=9何解?其真實(shí)含義就是往棧中存了三個(gè)值,符號(hào)為加,于是6+3就等于9了。以此類(lèi)推( *6 3)自然就是18了。
3、給出以下代碼
public class TestObj{ public static void main(String args){ Object o=new Object(){ public boolean equals(Object obj){ return true; } }; System.out.println(o.equals(“Fred”)); } }
請(qǐng)給出結(jié)果:()
正確答案:B
A 運(yùn)行時(shí)拋出異常
B true
C Fred
D 第三行編譯錯(cuò)誤
題解:
1、 這是匿名類(lèi) 格式是:new 父類(lèi)/接口 () {定義成員或覆蓋方法} 使用場(chǎng)景:只使用一次時(shí)。
4、當(dāng)編譯并運(yùn)行下面程序時(shí)會(huì)發(fā)生什么結(jié)果()
public class Bground extends Thread{ public static void main(String argv){ Bground b = new Bground(); b.run(); } public void start(){ for(int i=0;i<10;i++){ System.out.println("Value of i = "+i); } } }
正確答案:D
A 編譯錯(cuò)誤,指明run方法沒(méi)有定義
B 運(yùn)行錯(cuò)誤,只鞥呢run方法沒(méi)有定義
C 編譯通過(guò)并輸出0到9
D 編譯通過(guò),但無(wú)輸出
題解:
1、選D 對(duì)于線程而言,start是讓線程從new變成runnable。run方法才是執(zhí)行體的入口。 但是在Thread中,run方法是個(gè)空方法,沒(méi)有具體實(shí)現(xiàn)。 Bground繼承了Thread,但是沒(méi)有重寫(xiě)run方法,那么調(diào)用run方法肯定是無(wú)輸出。
5、對(duì)于文件的描述正確的是( )
正確答案:D
A 文本文件是以“.txt”為后綴名的文件,其他后綴名的文件是二進(jìn)制文件。
B File類(lèi)是Java中對(duì)文件進(jìn)行讀寫(xiě)操作的基本類(lèi)。
C 無(wú)論文本文件還是二進(jìn)制文件,讀到文件末尾都會(huì)拋出EOFException異常。
D Java中對(duì)于文本文件和二進(jìn)制文件,都可以當(dāng)作二進(jìn)制文件進(jìn)行操作。
題解:
1、A.文件分為文本文件和二進(jìn)制文件,計(jì)算機(jī)只認(rèn)識(shí)二進(jìn)制,所以實(shí)際上都是二進(jìn)制的不同解釋方式。文本文件是以不同編碼格式顯示的字符,例如Ascii、Unicode等,window中文本文件的后綴名有".txt"
2、".log"
3、各種編程語(yǔ)言的源碼文件等;二進(jìn)制文件就是用文本文檔打開(kāi)是看不懂亂碼,只要能用文本打開(kāi)的文件都可以算是文本文件,只是顯示的結(jié)果不是你想要的,二進(jìn)制文件只有用特殊的應(yīng)用才能讀懂的文件,例如".png"
4、".bmp"等,計(jì)算機(jī)中大部分的文件還是二進(jìn)制文件。 B.File類(lèi)是對(duì)文件整體或者文件屬性操作的類(lèi),例如創(chuàng)建文件、刪除文件、查看文件是否存在等功能,不能操作文件內(nèi)容;文件內(nèi)容是用IO流操作的。 C.當(dāng)輸入過(guò)程中意外到達(dá)文件或流的末尾時(shí),拋出EOFException異常
5、正常情況下讀取到文件末尾時(shí),返回一個(gè)特殊值表示文件讀取完成,例如read()返回-1表示文件讀取完成。 D.上面A選項(xiàng)已經(jīng)說(shuō)了,不論是文本文件還是二進(jìn)制文件,在計(jì)算機(jī)中都是以二進(jìn)制形式存儲(chǔ)的,所以都當(dāng)做二進(jìn)制文件讀取。
6、 File類(lèi)是 文件和目錄路徑名的抽象表示形式。
7、 D:正確 B:File類(lèi)是java中文件和目錄路徑名的抽象表示形式。Java中對(duì)文件進(jìn)行讀寫(xiě)操作的基本類(lèi)是IO類(lèi)。 C:讀到文件末尾不會(huì)拋出異常。EOFException:當(dāng)輸入過(guò)程中意外到達(dá)文件或流的末尾時(shí),拋出此異常。
6、以下代碼執(zhí)行的結(jié)果顯示是多少( )?
public class Demo { class Super { int flag = 1; Super() { test(); } void test() { System.out.println("Super.test() flag=" + flag); } } class Sub extends Super { Sub(int i) { flag = i; System.out.println("Sub.Sub()flag=" + flag); } void test() { System.out.println("Sub.test()flag=" + flag); } } public static void main(String args) { new Demo().new Sub(5); } }
正確答案:A
A Sub.test() flag=1
Sub.Sub() flag=5
B Sub.Sub() flag=5
Sub.test() flag=5
C Sub.test() flag=0
Sub.Sub() flag=5
D Super.test() flag=1
Sub.Sub() flag=5
題解:
1、在繼承中代碼的執(zhí)行順序?yàn)椋?/p>
1.父類(lèi)靜態(tài)對(duì)象,父類(lèi)靜態(tài)代碼塊
2.子類(lèi)靜態(tài)對(duì)象,子類(lèi)靜態(tài)代碼塊
3.父類(lèi)非靜態(tài)對(duì)象,父類(lèi)非靜態(tài)代碼塊
4.父類(lèi)構(gòu)造函數(shù)
5.子類(lèi)非靜態(tài)對(duì)象,子類(lèi)非靜態(tài)代碼塊
6.子類(lèi)構(gòu)造函數(shù)
對(duì)于本題來(lái)說(shuō):在只想new Sub(5)的時(shí)候,父類(lèi)先初始化了 int flag = 1,然后執(zhí)行父類(lèi)的構(gòu)造函數(shù)Super(),父類(lèi)構(gòu)造函數(shù)中執(zhí)行的test()方法,因子類(lèi)是重寫(xiě)了test()方法的,因此父類(lèi)構(gòu)造函數(shù)中的test()方法實(shí)際執(zhí)行的是子類(lèi)的test()方法,所以輸出為Sub.test() flag=1,接著執(zhí)行子類(lèi)構(gòu)造函數(shù)Sub(5) 將flag賦值為5,因此輸出結(jié)果Sub.Sub() flag=5。最終選擇了A。
2、
1.首先調(diào)用父類(lèi)構(gòu)造方法,即super()
2.調(diào)用test()方法。
3.由于在子類(lèi)sub()中重寫(xiě)了test()方法,所以調(diào)用子類(lèi)test()
4.輸出Sub.test() flag=1
5.調(diào)用sub的有參構(gòu)造方法
6.輸出Sub.Sub() flag=5 重點(diǎn)在于要時(shí)刻記得子類(lèi)重寫(xiě)父類(lèi)方法,調(diào)用時(shí)會(huì)調(diào)用子類(lèi)重寫(xiě)之后的方法 當(dāng)然,這一切的前提都是 實(shí)例化子類(lèi)對(duì)象
7、以下哪幾個(gè)是java中的集合類(lèi)型?
正確答案:ABD
A Vector
B Set
C String
D List
題解:
1、 Java中的集合類(lèi)型:Vector、Set、List
8、Java 多線程有幾種實(shí)現(xiàn)方法?( )
正確答案:AB
A 繼承Thread類(lèi)
B 實(shí)現(xiàn)Runnable接口
C 實(shí)現(xiàn)Thread接口
D 以上都不正確
題解:
1、實(shí)現(xiàn)多線程的方法: 1.繼承Thread類(lèi) 2.實(shí)現(xiàn)Runnable接口 3.實(shí)現(xiàn)Callable接口
2、 實(shí)現(xiàn)多線程的方法: 1.繼承Thread類(lèi) 2.實(shí)現(xiàn)Runnable接口 3.實(shí)現(xiàn)Callable接口
3、然后使用 FutureTask包裝,因?yàn)镃allable接口沒(méi)有實(shí)現(xiàn)Runnable接口不能做為T(mén)hread的target,而FutureTask是在Java程序中可以取消的異步運(yùn)算,有可以開(kāi)始,取消運(yùn)算,查詢(xún)運(yùn)算是否結(jié)束,獲得查詢(xún)結(jié)果的功能,特別注意的是,如果查詢(xún)結(jié)果時(shí),運(yùn)算還沒(méi)完成則會(huì)阻塞線程。 4.使用,java.util.current.ThreadPoolExecutor來(lái)獲取線程,執(zhí)行多線程
4、 Java多線程實(shí)現(xiàn)方式主要有四種:繼承Thread類(lèi)、實(shí)現(xiàn)Runnable接口、實(shí)現(xiàn)Callable接口通過(guò)FutureTask包裝器來(lái)創(chuàng)建Thread線程、使用ExecutorService、Callable、Future實(shí)現(xiàn)有返回結(jié)果的多線程。 其中前兩種方式線程執(zhí)行完后都沒(méi)有返回值,后兩種是帶返回值的。
9、下面哪些具體實(shí)現(xiàn)類(lèi)可以用于存儲(chǔ)鍵,值對(duì),并且方法調(diào)用提供了基本的多線程安全支持:()
正確答案:AE
A java.util.ConcurrentHashMap
B java.util.Map
C java.util.TreeMap
D java.util.SortMap
E java.util.Hashtable
F java.util.HashMap
題解:
1、Hashtable的方法都是synchrnized修飾的線程安全,ConcurrentHashMap并發(fā)容器,JDK7采用分段鎖,JDK8采用CAS算法,線程安全,建議使用,Connections工具類(lèi)提供了一個(gè)方法synchrnizedMap可以把Map同步,本質(zhì)就是給每一個(gè)方法加上synchrnized關(guān)鍵字進(jìn)行同步
2、 Hashtable是線程安全的哈希表,它是通過(guò)synchronized來(lái)保證線程安全的;即,多線程通過(guò)同一個(gè)“對(duì)象的同步鎖”來(lái)實(shí)現(xiàn)并發(fā)控制。Hashtable在線程競(jìng)爭(zhēng)激烈時(shí),效率比較低(此時(shí)建議使用ConcurrentHashMap)。當(dāng)一個(gè)線程訪問(wèn)Hashtable的同步方法時(shí),其它線程如果也在訪問(wèn)Hashtable的同步方法時(shí),可能會(huì)進(jìn)入阻塞狀態(tài)。 Collections.synchronizedMap()使用了synchronized同步關(guān)鍵字來(lái)保證對(duì)Map的操作是線程安全的。 ConcurrentHashMap是線程安全的哈希表。在JDK1.7中它是通過(guò)“鎖分段”來(lái)保證線程安全的,本質(zhì)上也是一個(gè)“可重入的互斥鎖”(ReentrantLock)。多線程對(duì)同一個(gè)片段的訪問(wèn),是互斥的;但是,對(duì)于不同片段的訪問(wèn),卻是可以同步進(jìn)行的。在JDK1.8中是通過(guò)使用CAS原子更新、volatile關(guān)鍵字、synchronized可重入鎖實(shí)現(xiàn)的。
3、 完美的避開(kāi)了正確答案
10、以下關(guān)于對(duì)象序列化描述正確的是
正確答案:CD
A 使用FileOutputStream可以將對(duì)象進(jìn)行傳輸
B 使用PrintWriter可以將對(duì)象進(jìn)行傳輸
C 使用transient修飾的變量不會(huì)被序列化
D 對(duì)象序列化的所屬類(lèi)需要實(shí)現(xiàn)Serializable接口
題解:
1、 1、答案應(yīng)該是C、D。
2、能夠?qū)?duì)象進(jìn)行傳輸?shù)拿菜浦挥蠴bjectOutputStream和ObjectInputStream這些以O(shè)bject開(kāi)頭的流對(duì)象。 3、D項(xiàng)繼承Seriallizable接口是經(jīng)常見(jiàn)到的,這毋庸置疑。
4、transient 修飾的變量在對(duì)象串化的時(shí)侯并不會(huì)將所賦值的值保存到傳中,串化的對(duì)象從磁盤(pán)讀取出來(lái)仍然是null。
5、這值得說(shuō)下Volatile這個(gè)修飾符,它是針對(duì)多線程情況下出現(xiàn)的。當(dāng)線程讀取它修飾的變量時(shí),都會(huì)強(qiáng)迫從主存中重新讀取。
答案匯總:
1、正確答案:A
2、正確答案:D
3、正確答案:B
4、正確答案:D
5、正確答案:D
6、正確答案:A
7、正確答案:ABD
8、正確答案:AB
9、正確答案:AE
10、正確答案:CD
總結(jié)
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
SpringBoot添加自定義攔截器的實(shí)現(xiàn)代碼
這篇文章主要介紹了SpringBoot添加自定義攔截器的實(shí)現(xiàn)代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-09-09Java實(shí)現(xiàn)AES/CBC/PKCS7Padding加解密的方法
這篇文章主要介紹了Java實(shí)現(xiàn)AES/CBC/PKCS7Padding加解密的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08Java經(jīng)典設(shè)計(jì)模式之適配器模式原理與用法詳解
這篇文章主要介紹了Java經(jīng)典設(shè)計(jì)模式之適配器模式,簡(jiǎn)單說(shuō)明了適配器模式的概念、原理,并結(jié)合實(shí)例形式分析了java適配器模式的用法與相關(guān)注意事項(xiàng),需要的朋友可以參考下2017-08-08Java中SynchronousQueue的底層實(shí)現(xiàn)原理剖析
BlockingQueue的實(shí)現(xiàn)類(lèi)中,有一種阻塞隊(duì)列比較特殊,就是SynchronousQueue(同步移交隊(duì)列),隊(duì)列長(zhǎng)度為0。本文就來(lái)剖析一下SynchronousQueue的底層實(shí)現(xiàn)原理,感興趣的可以了解一下2022-11-11SpringBoot+Response如何統(tǒng)一返回result結(jié)果集
這篇文章主要介紹了SpringBoot+Response如何統(tǒng)一返回result結(jié)果集,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05基于StringBuilder類(lèi)中的重要方法(介紹)
下面小編就為大家?guī)?lái)一篇基于StringBuilder類(lèi)中的重要方法(介紹)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-07-07SpringBoot整合MyCat實(shí)現(xiàn)讀寫(xiě)分離的方法
這篇文章主要介紹了SpringBoot整合MyCat實(shí)現(xiàn)讀寫(xiě)分離的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04