承蒙各位厚愛,我們一起每天進(jìn)步一點點?。ㄊ髽?biāo)選中空白處查看答案)
1、public interface IService {String NAME=“default”;}
默認(rèn)類型等價表示是哪一項:
正確答案: C
public String NAME=“default”;
public static String NAME=“default”;
public static final String NAME=“default”;
private String NAME=“default”;
題解:
接口中的變量默認(rèn)是public static final 的,方法默認(rèn)是public abstract 的
2、關(guān)于以下程序代碼的說明正確的
1
2
3
4
5
6
7
8
9
10
11
12
13
|
class HasStatic{ private static int x = 100 ; public static void main(String args[ ]){ HasStatic hs1 = new HasStatic(); hs1.x++; HasStatic hs2 = new HasStatic(); hs2.x++; hs1= new HasStatic(); hs1.x++; HasStatic.x--; System.out.println( "x=" +x); } } |
正確答案: D
5行不能通過編譯,因為引用了私有靜態(tài)變量
10行不能通過編譯,因為x是私有靜態(tài)變量
程序通過編譯,輸出結(jié)果為:x=103
程序通過編譯,輸出結(jié)果為:x=102
題解:
答案選D
因為x的 修飾符為 static 所以x為類變量,即對于所有的實例來說,他們訪問的x為同一個x,類變量存儲在方法區(qū),不屬于每個實例的私有,
剛開始x=100
調(diào)用hs1.x++ x為101;
調(diào)用hs2.x++ x為102;
調(diào)用hs1.x++ x為103 (此時hs1指向了一個新的HasStatic實例,但是依然訪問的是同一個X)
調(diào)用HasStatic.x-- x為102
所以結(jié)果為D
3、以下 _____ 不是 Object 類的方法
正確答案: D
clone()
finalize()
toString()
hasNext()
題解:
object類的方法:
1.clone方法
保護(hù)方法,實現(xiàn)對象的淺復(fù)制,只有實現(xiàn)了Cloneable接口才可以調(diào)用該方法,否則拋出CloneNotSupportedException異常。
2.getClass方法
final方法,獲得運(yùn)行時類型。
3.toString方法
該方法用得比較多,一般子類都有覆蓋。
4.finalize方法
該方法用于釋放資源。因為無法確定該方法什么時候被調(diào)用,很少使用。
5.equals方法
該方法是非常重要的一個方法。一般equals和==是不一樣的,但是在Object中兩者是一樣的。子類一般都要重寫這個方法。
6.hashCode方法方法用于哈希查找,重寫了equals方法一般都要重寫hashCode方法。這個方法在一些具有哈希功能的Collection中用到。
一般必須滿足obj1.equals(obj2)==true??梢酝瞥鰋bj1.hash- Code()==obj2.hashCode(),但是hashCode相等不一定就滿足equals。不過為了提高效率,應(yīng)該盡量使上面兩個條件接近等價。
7.wait方法
wait方法就是使當(dāng)前線程等待該對象的鎖,當(dāng)前線程必須是該對象的擁有者,也就是具有該對象的鎖。wait()方法一直等待,直到獲得鎖或者被中斷。wait(long timeout)設(shè)定一個超時間隔,如果在規(guī)定時間內(nèi)沒有獲得鎖就返回。
調(diào)用該方法后當(dāng)前線程進(jìn)入睡眠狀態(tài),直到以下事件發(fā)生。
(1)其他線程調(diào)用了該對象的notify方法。
(2)其他線程調(diào)用了該對象的notifyAll方法。
(3)其他線程調(diào)用了interrupt中斷該線程。
(4)時間間隔到了。
此時該線程就可以被調(diào)度了,如果是被中斷的話就拋出一個InterruptedException異常。
8.notify方法
該方法喚醒在該對象上等待的某個線程。
9.notifyAll方法
該方法喚醒在該對象上等待的所有線程。
4、try塊后必須有catch塊。()
正確答案: B
正確
錯誤
題解:
try塊后面不一定需要跟著catch塊,可以只跟著finally塊
try 和 catch 不需要一定共存,try是嘗試對其中代碼捕獲異常,catch是捕獲異常并且可以處理異常。。你可以 try 來搜尋異常,不去捕獲。也就是不去catch 這是可以的。。至于提示加finally,finally的意思是,其中的代碼一定會執(zhí)行,也就是說,如果try 其中的代碼產(chǎn)生了異常,如果有catch 則會直接跳轉(zhuǎn)到catch部分,如果沒有catch 會跳轉(zhuǎn)到‘}'后面的代碼,這樣,以上方法就沒有一個確定的返回值,所以要加finally 作為方法出異常以后的返回的結(jié)果。
5、已知有下列Test類的說明,在該類的main方法內(nèi),則下列哪個語句是正確的?()
public class Test
{
private float f = 1.0f;
int m = 12;
static int n = 1;
public static void main (String args[])
{
Test t = new Test();
}
}
正確答案: A
t.f;
this.n;
Test.m
Test.f
**題解:
A.雖然變量修飾符為private,但main函數(shù)在此類中所以仍然可以直接用對象名來調(diào)用
B.static類變量,不能用對象名調(diào)用,只能用類名調(diào)用
C.非類變量不能用類名調(diào)用,只能先實例化再調(diào)用
D.同C **
6、String s = new String(“xyz”);創(chuàng)建了幾個StringObject?
正確答案: A
兩個或一個都有可能
兩個
一個
三個
題解:
這種題以前的日常練習(xí)題中出現(xiàn)過
如果常量池中存在“xyz”就只會創(chuàng)建一個對象,如果沒有就會創(chuàng)建兩個
7、下面有關(guān)JVM內(nèi)存,說法錯誤的是?
正確答案: C
程序計數(shù)器是一個比較小的內(nèi)存區(qū)域,用于指示當(dāng)前線程所執(zhí)行的字節(jié)碼執(zhí)行到了第幾行,是線程隔離的
虛擬機(jī)棧描述的是Java方法執(zhí)行的內(nèi)存模型,用于存儲局部變量,操作數(shù)棧,動態(tài)鏈接,方法出口等信息,是線程隔離的
方法區(qū)用于存儲JVM加載的類信息、常量、靜態(tài)變量、以及編譯器編譯后的代碼等數(shù)據(jù),是線程隔離的
原則上講,所有的對象都在堆區(qū)上分配內(nèi)存,是線程之間共享的
題解:
方法區(qū)在JVM中也是一個非常重要的區(qū)域,它與堆一樣,是被 線程共享 的區(qū)域。 在方法區(qū)中,存儲了每個類的信息(包括類的名稱、方法信息、字段信息)、靜態(tài)變量、常量以及編譯器編譯后的代碼等。
8、問這個程序的輸出結(jié)果。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
package Wangyi; class Base { public void method() { System.out.println( "Base" ); } } class Son extends Base { public void method() { System.out.println( "Son" ); } public void methodB() { System.out.println( "SonB" ); } } public class Test01 { public static void main(String[] args) { Base base = new Son(); base.method(); base.methodB(); } } |
正確答案: D
Base SonB
Son SonB
Base Son SonB
編譯不通過
題解:
Base base=new Son(); 是多態(tài)的表示形式。父類對象調(diào)用了子類創(chuàng)建了Son對象。
base調(diào)用的method()方法就是調(diào)用了子類重寫的method()方法。
而此時base還是屬于Base對象,base調(diào)用methodB()時Base對象里沒有這個方法,所以編譯不通過。
要想調(diào)用的話需要先通過SON son=(SON)base;強(qiáng)制轉(zhuǎn)換,然后用son.methodB()調(diào)用就可以了。
9、java關(guān)于異常處理機(jī)制的敘述哪些正確
正確答案: B C
catch部分捕捉到異常情況時,才會執(zhí)行finally部分
當(dāng)try區(qū)段的程序發(fā)生異常時,才會執(zhí)行catch區(qū)段的程序
在try區(qū)段不論程序是否發(fā)生異常及捕獲到異常,都會執(zhí)行finally部分
以上都是
題解:
1.try和catch語句
●將要處理的代碼放入try塊中,然后創(chuàng)建相應(yīng)的catch塊的列表。如果生成都異常與catch中提到的相匹配,那么catch條件中的塊語句就被執(zhí)行。try塊后可能有許多catch塊,每個都處理不同的異常。每個catch中的參數(shù)都是Exception的子類。
2.finally語句
●finally語句定義一個總是執(zhí)行的代碼,而不考慮異常是否被捕獲。
3.throw引起一個異常
●調(diào)用申明拋出異常
●throw語句強(qiáng)制拋出異常
10、下面哪些賦值語句是正確的()
正確答案: A B D
long test=012
float f=-412
int other =(int)true
double d=0x12345678
byte b=128
題解:
選ABD
A和B中l(wèi)ong和float,正常定義需要加l和f,但是long和float屬于基本類型,會進(jìn)行轉(zhuǎn)化,所以不會報出異常。AB正確
boolean類型不能和任何類型進(jìn)行轉(zhuǎn)換,會報出類型異常錯誤。所以C錯。
D選項可以這樣定義,D正確。
E選項中,byte的取值范圍是-128—127。報出異常: cannot convert from int to byte.所以E選項錯誤。
答案匯總:
1、正確答案: C
2、正確答案: D
3、正確答案: D
4、正確答案: B
5、正確答案: A
6、正確答案: A
7、正確答案: C
8、正確答案: D
9、正確答案: B C
10、正確答案: A B D
總結(jié)
本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關(guān)注服務(wù)器之家的更多內(nèi)容!
原文鏈接:https://blog.csdn.net/weixin_43883917/article/details/119317091