您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關(guān)Java中10道日常練習(xí)題的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。
Integer b = 1;
Integer c = 500;
Integer d = 500;
System.out.print(a == b);
System.out.print(c == d);
上述代碼返回結(jié)果為:
正確答案: B
true、true
true、false
false、true
false、false
題解:
Interger的范圍時(shí)[-128,127],在這個(gè)范圍內(nèi)比較大小,相等為true,這個(gè)范圍是被緩存了的,也就是每個(gè)對(duì)象的內(nèi)存地址是相同的,賦值就直接從緩存中取,不會(huì)有新的對(duì)象產(chǎn)生,而大于這個(gè)范圍,將會(huì)重新創(chuàng)建一個(gè)Integer對(duì)象,也就是new一個(gè)對(duì)象出來,超過范圍為false
正確答案: C
參數(shù)個(gè)數(shù)
參數(shù)類型
返回值類型
參數(shù)順序
題解:
關(guān)于D的疑問:
1.參數(shù)類型不同時(shí),順序不同也是重載,例如:
public void first(int a,double b ){}
public void first(double b2,int a2){}
2.參數(shù)類型相同時(shí),沒有順序之分,例如:
public void first(int a,int b ){}
public void first(int b2,int a2){}
因?yàn)閿?shù)據(jù)類型相同,不能說明誰前誰后,這里a,b,a2,b2,僅僅是變量名稱而已。
正確答案: D
A:用throws定義了方法可能拋出的異常,那么調(diào)用此方法時(shí)一定會(huì)拋出此異常。
B:如果try塊中沒有拋出異常,finally塊中的語句將不會(huì)被執(zhí)行。
C:拋出異常意味著程序發(fā)生運(yùn)行時(shí)錯(cuò)誤,需要調(diào)試修改
D:Java中的可不檢測(cè)(unchecked)異??赡軄碜訰untimeException類或其子類。
題解:
A錯(cuò) 在調(diào)用此方法的時(shí)候 也可以再次申明以將異常交由更高一級(jí)處理。
B錯(cuò) finally塊中的語句一定會(huì)被執(zhí)行。除非catch塊中有System.exit(0)。
C錯(cuò) 拋出異常不一定是運(yùn)行時(shí)異常,也有可能是編譯時(shí)異常。
D對(duì) 運(yùn)行時(shí)異常的特點(diǎn)是Java編譯器不會(huì)檢查它。
Exception(異常)
是程序本身可以處理的異常。主要包含RuntimeException等運(yùn)行時(shí)異常和IOException,SQLException等非運(yùn)行時(shí)異常。
運(yùn)行時(shí)異常 包括:都是RuntimeException類及其子類異常,如NullPointerException(空指針異常)、IndexOutOfBoundsException(下標(biāo)越界異常)等,這些異常是不檢查異常,程序中可以選擇捕獲處理,也可以不處理。這些異常一般是由程序邏輯錯(cuò)誤引起的,程序應(yīng)該從邏輯角度盡可能避免這類異常的發(fā)生。
運(yùn)行時(shí)異常的特點(diǎn)是Java編譯器不會(huì)檢查它,也就是說,當(dāng)程序中可能出現(xiàn)這類異常,即使沒有用try-catch語句捕獲它,也沒有用throws子句聲明拋出它,也會(huì)編譯通過。
非運(yùn)行時(shí)異常(編譯異常) 包括:RuntimeException以外的異常,類型上都屬于Exception類及其子類。從程序語法角度講是必須進(jìn)行處理的異常,如果不處理,程序就不能編譯通過。如IOException、SQLException等以及用戶自定義的Exception異常,一般情況下不自定義檢查異常。
public static int getValue(int i) {
int result = 0;
switch (i) {
case 1:
result = result + i;
case 2:
result = result + i * 2;
case 3:
result = result + i * 3;
}
return result;
}
正確答案: D
0
2
4
10
題解:
沒有break,發(fā)生case穿透現(xiàn)象,程序會(huì)繼續(xù)向下執(zhí)行,直到遇到break或者結(jié)束switch語句的大括號(hào)為止。
當(dāng)i=2時(shí),執(zhí)行程序
case2:result=4;
case3:result=4+6=10;
沒有break,就會(huì)順序執(zhí)行下去
正確答案: C
A:Ant 沒有正式的約定如一個(gè)一般項(xiàng)目的目錄結(jié)構(gòu),你必須明確的告訴 Ant 哪里去找源代碼
B:Maven 擁有約定,因?yàn)槟阕裱思s定,它已經(jīng)知道你的源代碼在哪里
C:maven和ant都有“生命周期”的概念,當(dāng)你輸入一個(gè)命令后,maven或者ant會(huì)執(zhí)行一系列的有序的步驟,直到到達(dá)你指定的生命周期
D:Ant構(gòu)建文件默認(rèn)命名為build.xml,Maven默認(rèn)構(gòu)建文件為pom.xml
題解:
Ant和Maven都是基于Java的構(gòu)建(build)工具。理論上來說,有些類似于(Unix)C中的make ,但沒有make的缺陷。Ant是軟件構(gòu)建工具,Maven的定位是軟件項(xiàng)目管理和理解工具。
Ant特點(diǎn):
-沒有一個(gè)約定的目錄結(jié)構(gòu)
-必須明確讓ant做什么,什么時(shí)候做,然后編譯,打包
-沒有生命周期,必須定義目標(biāo)及其實(shí)現(xiàn)的任務(wù)序列
-沒有集成依賴管理
Maven特點(diǎn) :
-擁有約定,知道你的代碼在哪里,放到哪里去
-擁有一個(gè)生命周期,例如執(zhí)行 mvn install 就可以自動(dòng)執(zhí)行編譯,測(cè)試,打包等構(gòu)建過程
-只需要定義一個(gè)pom.xml,然后把源碼放到默認(rèn)的目錄,Maven幫你處理其他事情
-擁有依賴管理,倉庫管理
正確答案: A
run()
start()
sleep()
suspend()
題解:
答案是A,題目說的是執(zhí)行線程,不是啟動(dòng)
run()方法用來執(zhí)行線程體中具體的內(nèi)容
start()方法用來啟動(dòng)線程對(duì)象,使其進(jìn)入就緒狀態(tài)
sleep()方法用來使線程進(jìn)入睡眠狀態(tài)
suspend()方法用來使線程掛起,要通過resume()方法使其重新啟動(dòng)
正確答案: A B
Hashtable
Vector
TreeSet
LinkedList
題解:
LinkedList 和 ArrayList 都是不同步的,線程不安全;
Vector 和 Stack 都是同步的,線程安全;
Set是線程不安全的;
Hashtable的方法是同步的,線程安全;
HashMap的方法不是同步的,線程不安全;
WeakHashMap是非線程安全。
正確答案: A C
都實(shí)現(xiàn)了Map接口
Hashtable類不是同步的,而HashMap類是同步的
Hashtable不允許null鍵或值
HashMap不允許null鍵或值
題解:
總結(jié)一下HashMap和Hashtable的區(qū)別:
(1)HashMap是Hashtable的輕量級(jí)實(shí)現(xiàn),它們都實(shí)現(xiàn)了Map接口,主要區(qū)別在于HashMap允許空(null)鍵值(key),而Hashtalbe不允許。
(2)HashMap沒有contains方法,而是containsValue和containsKey。
(3)Hashtable的方法是線程安全的,而HashMap不是線程安全的。
(4)HashMap使用Iterator,Hashtable使用Enumeration。
(5)HashMap和Hashtable采用的hash/rehash算法都幾乎一樣,所以性能不會(huì)有很大的差異。
(6)在Hashtable中,hash數(shù)組默認(rèn)大小是11,增加的方式是old*2+1。在Has和Map中,hash數(shù)組的默認(rèn)大小是16,而且一定是2的倍數(shù)。
(7)hash值的使用不同,Hashtable直接使用對(duì)象的hashCode。
正確答案: A C
final是java中的修飾符,可以修飾類、接口、抽象類、方法和屬性
final修飾的類肯定不能被繼承
final修飾的方法不能被重載
final修飾的變量不允許被再次賦值
題解:
1.final修飾變量,則等同于常量
2.final修飾方法中的參數(shù),稱為最終參數(shù)。
3.final修飾類,則類不能被繼承
4.final修飾方法,則方法不能被重寫。
5.final 不能修飾抽象類
6.final修飾的方法可以被重載 但不能被重寫
正確答案: A C F
A:數(shù)組是一個(gè)對(duì)象,不同類型的數(shù)組具有不同的類
B:數(shù)組長度是可以動(dòng)態(tài)調(diào)整的
C:數(shù)組是一個(gè)連續(xù)的存儲(chǔ)結(jié)構(gòu)
D:一個(gè)固定長度的數(shù)組可類似這樣定義:int array[100]
E:兩個(gè)數(shù)組用Object 里equals方法比較時(shí),會(huì)逐個(gè)遍歷其中的元素,對(duì)每個(gè)元素進(jìn)行比較
F:java中不存在 int * a這樣的東西做數(shù)組的形參
題解:
B:數(shù)組長度不是動(dòng)態(tài)的
D:一維數(shù)組的初始化:
(1)靜態(tài)初始化
1)int[] arr = new int[]{1, 2, 3}
2)int[] arr = {1, 2, 3}
(2)動(dòng)態(tài)初始化
int[] arr = new int[3];
E:數(shù)組沒有重寫equals,所以還是使用的object的equals。相當(dāng)于“==”。
1、正確答案: B
2、正確答案: C
3、正確答案: D
4、正確答案: D
5、正確答案: C
6、正確答案: A
7、正確答案: A B
8、正確答案: A C
9、正確答案: A C
10、正確答案: A C F
感謝各位的閱讀!關(guān)于“Java中10道日常練習(xí)題”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。