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í)間太長,因此主線程很有可能在子線程之前結(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中的CopyOnWriteArrayList容器解析
這篇文章主要介紹了Java中的CopyOnWriteArrayList容器解析,CopyOnWriteArrayList容器允許并發(fā)讀,讀操作是無鎖的,性能較高。至于寫操作,比如向容器中添加一個(gè)元素,則首先將當(dāng)前容器復(fù)制一份,然后在新副本上執(zhí)行寫操作,需要的朋友可以參考下2023-12-12
Java中JWT(JSON?Web?Token)的運(yùn)用具體案例
這篇文章主要介紹了Java中JWT(JSON?Web?Token)的運(yùn)用具體案例,JWT(JSON?Web?Token)是一種開放標(biāo)準(zhǔn),用于在網(wǎng)絡(luò)應(yīng)用環(huán)境中安全地傳遞信息,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-11-11
如何使用IDEA的groovy腳本文件生成帶JPA注解的實(shí)體類(圖文詳解)
這篇文章主要介紹了如何使用IDEA的groovy腳本文件生成帶JPA注解的實(shí)體類,本文通過圖文并茂實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07
使用eclipse打包Maven項(xiàng)目的實(shí)現(xiàn)步驟
本文主要介紹了使用eclipse打包Maven項(xiàng)目的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-03-03
SpringBoot+URule實(shí)現(xiàn)可視化規(guī)則引擎的方法示例
規(guī)則引擎其實(shí)是一種組件,它可以嵌入到程序當(dāng)中,將程序復(fù)雜的判斷規(guī)則從業(yè)務(wù)代碼中剝離出來,使得程序只需要關(guān)心自己的業(yè)務(wù),而不需要去進(jìn)行復(fù)雜的邏輯判斷,本文給大家介紹了SpringBoot+URule實(shí)現(xiàn)可視化規(guī)則引擎的方法示例,需要的朋友可以參考下2024-12-12
javaweb中ajax請(qǐng)求后臺(tái)servlet(實(shí)例)
下面小編就為大家?guī)硪黄猨avaweb中ajax請(qǐng)求后臺(tái)servlet(實(shí)例)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-06-06


