Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(45)
承蒙各位厚愛,我們一起每天進(jìn)步一點(diǎn)點(diǎn)?。ㄊ髽?biāo)選中空白處查看答案)
1、下列說法哪個(gè)正確( )
正確答案: C
不需要定義類,就能創(chuàng)建對(duì)象
對(duì)象中必須有數(shù)據(jù)域和方法
數(shù)據(jù)域可以是基本類型變量,也可以是一個(gè)對(duì)象
數(shù)據(jù)域必須是基本類型變量
題解:
A.沒有模板,怎么可能創(chuàng)建對(duì)象,創(chuàng)建對(duì)象必須先要定義類,常識(shí)
B.對(duì)象中的數(shù)據(jù)域和方法取決于該對(duì)象的類,類里面有就有,沒有就沒有
D.數(shù)據(jù)域不一定是基本類型,也可以是引用類型
2、只有實(shí)現(xiàn)了()接口的類,其對(duì)象才能序列化。
正確答案: A
Serializable
Cloneable
Comparable
Writeable
題解:
A、Serializable接口是專門提供給類實(shí)現(xiàn)序列化用的。要實(shí)現(xiàn)序列化對(duì)象必須要實(shí)現(xiàn) Serializable 接口
B、可進(jìn)行復(fù)制
C、比較器
D、hadoop中的接口
3、在 java 中 , 一個(gè)類()
正確答案: B
可以繼承多個(gè)類
可以實(shí)現(xiàn)多個(gè)接口
在一個(gè)程序中只能有一個(gè)子類
只能實(shí)現(xiàn)一個(gè)接口
題解:
Java單繼承,多實(shí)現(xiàn):一個(gè)類可以同時(shí)實(shí)現(xiàn)多個(gè)接口,但是只能繼承自一個(gè)類,但它可以被多個(gè)類繼承,也就是說一個(gè)類只有一個(gè)直接父類,但是可以有多個(gè)子類
4、
public class Test{ static int cnt = 6; static{ cnt += 9; } public static void main(String[] args){ System.out.println(“cnt =” + cnt); } static{ cnt /=3; }; }
cnt的值是
正確答案: A
cnt=5
cnt=2
cnt=3
cnt=6
題解:
看好下面的說法:
在JVM調(diào)用mian方法之前先用進(jìn)行靜態(tài)內(nèi)容的初始化。順序?yàn)椋焊割惖撵o態(tài)變量, 父類的靜態(tài)代碼塊 ,子類的靜態(tài)變量,子類的靜態(tài)代碼塊。(錯(cuò)誤的)
不存在先執(zhí)行靜態(tài)變量后執(zhí)行靜態(tài)初始化塊,它倆根據(jù)在代碼中的順序執(zhí)行
題目中都是靜態(tài)的,就都執(zhí)行了,從上到下。
正確的說法:
(1)父類靜態(tài)成員和靜態(tài)初始化塊,按在代碼中出現(xiàn)的順序依次執(zhí)行。
(2)子類靜態(tài)成員和靜態(tài)初始化塊,按在代碼中出現(xiàn)的順序依次執(zhí)行。
(3)父類實(shí)例成員和實(shí)例初始化塊,按在代碼中出現(xiàn)的順序依次執(zhí)行。
(4)執(zhí)行父類構(gòu)造方法。
(5)子類實(shí)例成員和實(shí)例初始化塊,按在代碼中出現(xiàn)的順序依次執(zhí)行。
(6)執(zhí)行子類構(gòu)造方法。
拓展測(cè)試:
/** * Keafmd * * @ClassName: Static * @Description: 測(cè)試static * @author: 牛哄哄的柯南 * @date: 2021-07-29 17:24 */ public class StaticTest { static { cnt = 6; } static int cnt = 100; public static void main(String[] args) { System.out.println("cnt = " + cnt); // 50 //最后輸出是50,如果按照錯(cuò)誤說法最后的輸出應(yīng)該是3 //按順序執(zhí)行就是cnt=6--->cnt=100---->cnt = 100/2 = 50. } static { cnt /= 2; } }
上面的代碼輸出結(jié)果為50,就很好的說明了,不存在先執(zhí)行靜態(tài)變量后執(zhí)行靜態(tài)初始化塊這一說。很多時(shí)候我們要?jiǎng)邮秩L試?。?!感興趣的自己debug看下過程。
5、要求匹配以下16進(jìn)制顏色值,正則表達(dá)式可以為: #ffbbad #Fc01DF #FFF #ffE
正確答案: B
/#([0-9a-f]{6}|[0-9a-fA-F]{3})/g
/#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})/g
/#([0-9a-fA-F]{3}|[0-9a-f]{6})/g
/#([0-9A-F]{3}|[0-9a-fA-F]{6})/g
題解:
首先正則表達(dá)式寫在兩個(gè)/之間,然后第一個(gè)為#表示字符串第一個(gè)為#,然后[0-9a-fA-F]表示范圍是數(shù)字和大小寫字母,之后{6}表示連續(xù)6個(gè)字符,之間還有一個(gè)|表示條件或;最后一個(gè)g,表示表明可以進(jìn)行全局匹配,如果不寫g,那么只會(huì)完成一輪匹配(或者說只返回第一個(gè)匹配的),寫g,可以進(jìn)行全局搜索。
6、下列語句哪一個(gè)是不正確的()
正確答案: D
Log4j支持按分鐘為間隔生成新的日志文件
Log4j是一個(gè)打印日志用的組件
Log4j支持按年為間隔生成新的日志文件
Log4j的日志打印級(jí)別可以在運(yùn)行時(shí)重新設(shè)置
題解:
日志的級(jí)別之間的大小關(guān)系如右所示:ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF Log4j建議只使用四個(gè)級(jí)別,優(yōu)先級(jí)從高到低分別是 ERROR > WARN > INFO > DEBUG。 log4j在運(yùn)行期間是不可以重新設(shè)置的
7、以下哪個(gè)不是Collection的子接口?
正確答案: D
List
Set
SortedSet
Map
題解:
Collection主要的子接口:
List:可以存放重復(fù)內(nèi)容
Set:不能存放重復(fù)內(nèi)容,所有重復(fù)的內(nèi)容靠hashCode()和equals()兩個(gè)方法區(qū)分
Queue:隊(duì)列接口
SortedSet:可以對(duì)集合中的數(shù)據(jù)進(jìn)行排序
Map沒有繼承Collection接口,Map提供key到value的映射。一個(gè)Map中不能包含相同的key,每個(gè)key只能映射一個(gè)value。Map接口提供3種集合的視圖,Map的內(nèi)容可以被當(dāng)作一組key集合,一組value集合,或者一組key-value映射。
8、以下會(huì)產(chǎn)生信息丟失的類型轉(zhuǎn)換是( )
正確答案: B
float a=10
int a=(int)8846.0
byte a=10; int b=-a
double d=100
題解:
A: float a=10; 可以. 它可以自動(dòng)把 int 的10 轉(zhuǎn)成 float.
但是寫成float a=10.0的話反而是把 double 轉(zhuǎn)成 float.,這樣會(huì)損失精度. 在 C/C++可以, 但在 java 是錯(cuò)誤的.
最正確的寫法是 float=10.0f;
B: double變?yōu)閕nt損失了精度。
C:byte與int轉(zhuǎn)換時(shí)若是int直接賦值給byte在-128-127范圍內(nèi)就是正確的,超出范圍就需強(qiáng)制類型轉(zhuǎn)換,整型變量賦給byte時(shí)均需強(qiáng)制類型轉(zhuǎn)換(如int n=10,byte a=(int)n),不考慮范圍。
D:int轉(zhuǎn)double,向上轉(zhuǎn),沒問題
9、下列代碼執(zhí)行結(jié)果為()
public static void main(String args[]) throws InterruptedException { Thread t = new Thread(new Runnable() { public void run() { try { Thread.sleep(2000); } catch (InterruptedException e) { throw new RuntimeException(e); } System.out.print("2"); } }); t.start(); t.join(); System.out.print("1"); }
正確答案: A
21
12
可能為12,也可能為21
以上答案都不對(duì)
題解:
join()的作用是:“等待該線程終止”,這里需要理解的就是該線程是指的主線程等待子線程的終止。也就是在子線程調(diào)用了join()方法后面的代碼,只有等到子線程結(jié)束了才能執(zhí)行。
因?yàn)樽泳€程的休眠時(shí)間太長(zhǎng),因此主線程很有可能在子線程之前結(jié)束也就是輸出結(jié)果是12,但是子線程用了join函數(shù),因此主線程必須等待子線程執(zhí)行完畢才結(jié)束因此輸出結(jié)果只能是21。
10、Java多線程有幾種實(shí)現(xiàn)方法?
正確答案: A B
繼承Thread類
實(shí)現(xiàn)Runnable接口
實(shí)現(xiàn)Thread接口
以上都不正確
題解:
1、繼承Thread類,Override它的run方法;
2、實(shí)現(xiàn)Runnable接口,實(shí)現(xiàn)run方法;
答案匯總:
1、正確答案: C
2、正確答案: A
3、正確答案: B
4、正確答案: A
5、正確答案: B
6、正確答案: D
7、正確答案: D
8、正確答案: B
9、正確答案: A
10、正確答案: A B
總結(jié)
本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
Java中比較器Comparator和Comparable的區(qū)別
這篇文章主要介紹了Java中比較器Comparator和Comparable的區(qū)別,我們?cè)谑褂?Collections.sort()對(duì)鏈表進(jìn)行排序時(shí),常常需要根據(jù)不同情況自定義排序規(guī)則,今天我們來看看比較器之間的區(qū)別,需要的朋友可以參考下2023-08-08idea啟動(dòng)tomcat控制臺(tái)中文亂碼的三種情況解決
本文主要介紹了idea啟動(dòng)tomcat控制臺(tái)中文亂碼,主要包括三種情況,分別介紹了一下解決方法,具有一定的參考價(jià)值,感興趣的可以了解一下2023-10-10一文搞懂Java MD5算法的原理及實(shí)現(xiàn)
MD5信息摘要算法,一種被廣泛使用的密碼散列函數(shù),可以產(chǎn)生出一個(gè)128位(16字節(jié))的散列值(hash value),用于確保信息傳輸完整一致。本文將詳解MD5算法的原理及實(shí)現(xiàn),感興趣的可以了解一下2022-06-06詳解idea文件右鍵創(chuàng)建New沒有Create New Servlet的解決辦法
這篇文章主要介紹了詳解idea文件右鍵創(chuàng)建New沒有Create New Servlet的解決辦法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12Spring?Cloud?Gateway?2.x跨域時(shí)出現(xiàn)重復(fù)Origin的BUG問題
這篇文章主要介紹了Spring?Cloud?Gateway?2.x跨域時(shí)出現(xiàn)重復(fù)Origin的BUG問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-04-04通過spring注解開發(fā),簡(jiǎn)單測(cè)試單例和多例區(qū)別
這篇文章主要介紹了通過spring注解開發(fā),簡(jiǎn)單測(cè)試單例和多例區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08