Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(47)
承蒙各位厚愛,我們一起每天進(jìn)步一點(diǎn)點(diǎn)?。ㄊ髽?biāo)選中空白處查看答案)
1、public interface IService {String NAME=“default”;}
默認(rèn)類型等價(jià)表示是哪一項(xiàng):
正確答案: 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)于以下程序代碼的說明正確的
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行不能通過編譯,因?yàn)橐昧怂接徐o態(tài)變量
10行不能通過編譯,因?yàn)閤是私有靜態(tài)變量
程序通過編譯,輸出結(jié)果為:x=103
程序通過編譯,輸出結(jié)果為:x=102
題解:
答案選D
因?yàn)閤的 修飾符為 static 所以x為類變量,即對(duì)于所有的實(shí)例來說,他們?cè)L問的x為同一個(gè)x,類變量存儲(chǔ)在方法區(qū),不屬于每個(gè)實(shí)例的私有,
剛開始x=100
調(diào)用hs1.x++ x為101;
調(diào)用hs2.x++ x為102;
調(diào)用hs1.x++ x為103 (此時(shí)hs1指向了一個(gè)新的HasStatic實(shí)例,但是依然訪問的是同一個(gè)X)
調(diào)用HasStatic.x-- x為102
所以結(jié)果為D
3、以下 _____ 不是 Object 類的方法
正確答案: D
clone()
finalize()
toString()
hasNext()
題解:
object類的方法:
1.clone方法
保護(hù)方法,實(shí)現(xiàn)對(duì)象的淺復(fù)制,只有實(shí)現(xiàn)了Cloneable接口才可以調(diào)用該方法,否則拋出CloneNotSupportedException異常。
2.getClass方法
final方法,獲得運(yùn)行時(shí)類型。
3.toString方法
該方法用得比較多,一般子類都有覆蓋。
4.finalize方法
該方法用于釋放資源。因?yàn)闊o法確定該方法什么時(shí)候被調(diào)用,很少使用。
5.equals方法
該方法是非常重要的一個(gè)方法。一般equals和==是不一樣的,但是在Object中兩者是一樣的。子類一般都要重寫這個(gè)方法。
6.hashCode方法方法用于哈希查找,重寫了equals方法一般都要重寫hashCode方法。這個(gè)方法在一些具有哈希功能的Collection中用到。
一般必須滿足obj1.equals(obj2)==true。可以推出obj1.hash- Code()==obj2.hashCode(),但是hashCode相等不一定就滿足equals。不過為了提高效率,應(yīng)該盡量使上面兩個(gè)條件接近等價(jià)。
7.wait方法
wait方法就是使當(dāng)前線程等待該對(duì)象的鎖,當(dāng)前線程必須是該對(duì)象的擁有者,也就是具有該對(duì)象的鎖。wait()方法一直等待,直到獲得鎖或者被中斷。wait(long timeout)設(shè)定一個(gè)超時(shí)間隔,如果在規(guī)定時(shí)間內(nèi)沒有獲得鎖就返回。
調(diào)用該方法后當(dāng)前線程進(jìn)入睡眠狀態(tài),直到以下事件發(fā)生。
(1)其他線程調(diào)用了該對(duì)象的notify方法。
(2)其他線程調(diào)用了該對(duì)象的notifyAll方法。
(3)其他線程調(diào)用了interrupt中斷該線程。
(4)時(shí)間間隔到了。
此時(shí)該線程就可以被調(diào)度了,如果是被中斷的話就拋出一個(gè)InterruptedException異常。
8.notify方法
該方法喚醒在該對(duì)象上等待的某個(gè)線程。
9.notifyAll方法
該方法喚醒在該對(duì)象上等待的所有線程。
4、try塊后必須有catch塊。()
正確答案: B
正確
錯(cuò)誤
題解:
try塊后面不一定需要跟著catch塊,可以只跟著finally塊
try 和 catch 不需要一定共存,try是嘗試對(duì)其中代碼捕獲異常,catch是捕獲異常并且可以處理異常。。你可以 try 來搜尋異常,不去捕獲。也就是不去catch 這是可以的。。至于提示加finally,finally的意思是,其中的代碼一定會(huì)執(zhí)行,也就是說,如果try 其中的代碼產(chǎn)生了異常,如果有catch 則會(huì)直接跳轉(zhuǎn)到catch部分,如果沒有catch 會(huì)跳轉(zhuǎn)到‘}'后面的代碼,這樣,以上方法就沒有一個(gè)確定的返回值,所以要加finally 作為方法出異常以后的返回的結(jié)果。
5、已知有下列Test類的說明,在該類的main方法內(nèi),則下列哪個(gè)語句是正確的?()
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ù)在此類中所以仍然可以直接用對(duì)象名來調(diào)用
B.static類變量,不能用對(duì)象名調(diào)用,只能用類名調(diào)用
C.非類變量不能用類名調(diào)用,只能先實(shí)例化再調(diào)用
D.同C **
6、String s = new String(“xyz”);創(chuàng)建了幾個(gè)StringObject?
正確答案: A
兩個(gè)或一個(gè)都有可能
兩個(gè)
一個(gè)
三個(gè)
題解:
這種題以前的日常練習(xí)題中出現(xiàn)過
如果常量池中存在“xyz”就只會(huì)創(chuàng)建一個(gè)對(duì)象,如果沒有就會(huì)創(chuàng)建兩個(gè)
7、下面有關(guān)JVM內(nèi)存,說法錯(cuò)誤的是?
正確答案: C
程序計(jì)數(shù)器是一個(gè)比較小的內(nèi)存區(qū)域,用于指示當(dāng)前線程所執(zhí)行的字節(jié)碼執(zhí)行到了第幾行,是線程隔離的
虛擬機(jī)棧描述的是Java方法執(zhí)行的內(nèi)存模型,用于存儲(chǔ)局部變量,操作數(shù)棧,動(dòng)態(tài)鏈接,方法出口等信息,是線程隔離的
方法區(qū)用于存儲(chǔ)JVM加載的類信息、常量、靜態(tài)變量、以及編譯器編譯后的代碼等數(shù)據(jù),是線程隔離的
原則上講,所有的對(duì)象都在堆區(qū)上分配內(nèi)存,是線程之間共享的
題解:
方法區(qū)在JVM中也是一個(gè)非常重要的區(qū)域,它與堆一樣,是被 線程共享 的區(qū)域。 在方法區(qū)中,存儲(chǔ)了每個(gè)類的信息(包括類的名稱、方法信息、字段信息)、靜態(tài)變量、常量以及編譯器編譯后的代碼等。
8、問這個(gè)程序的輸出結(jié)果。
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)的表示形式。父類對(duì)象調(diào)用了子類創(chuàng)建了Son對(duì)象。
base調(diào)用的method()方法就是調(diào)用了子類重寫的method()方法。
而此時(shí)base還是屬于Base對(duì)象,base調(diào)用methodB()時(shí)Base對(duì)象里沒有這個(gè)方法,所以編譯不通過。
要想調(diào)用的話需要先通過SON son=(SON)base;強(qiáng)制轉(zhuǎn)換,然后用son.methodB()調(diào)用就可以了。
9、java關(guān)于異常處理機(jī)制的敘述哪些正確
正確答案: B C
catch部分捕捉到異常情況時(shí),才會(huì)執(zhí)行finally部分
當(dāng)try區(qū)段的程序發(fā)生異常時(shí),才會(huì)執(zhí)行catch區(qū)段的程序
在try區(qū)段不論程序是否發(fā)生異常及捕獲到異常,都會(huì)執(zhí)行finally部分
以上都是
題解:
1.try和catch語句
●將要處理的代碼放入try塊中,然后創(chuàng)建相應(yīng)的catch塊的列表。如果生成都異常與catch中提到的相匹配,那么catch條件中的塊語句就被執(zhí)行。try塊后可能有許多catch塊,每個(gè)都處理不同的異常。每個(gè)catch中的參數(shù)都是Exception的子類。
2.finally語句
●finally語句定義一個(gè)總是執(zhí)行的代碼,而不考慮異常是否被捕獲。
3.throw引起一個(gè)異常
●調(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屬于基本類型,會(huì)進(jìn)行轉(zhuǎn)化,所以不會(huì)報(bào)出異常。AB正確
boolean類型不能和任何類型進(jìn)行轉(zhuǎn)換,會(huì)報(bào)出類型異常錯(cuò)誤。所以C錯(cuò)。
D選項(xiàng)可以這樣定義,D正確。
E選項(xiàng)中,byte的取值范圍是-128—127。報(bào)出異常: cannot convert from int to byte.所以E選項(xiàng)錯(cuò)誤。
答案匯總:
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)注腳本之家的更多內(nèi)容!
相關(guān)文章
Java的Lambda表達(dá)式和Stream流的作用以及示例
這篇文章主要介紹了Java的Lambda表達(dá)式和Stream流簡單示例,Lambda允許把函數(shù)作為一個(gè)方法的參數(shù),使用Lambda表達(dá)式可以寫出更簡潔、更靈活的代碼,而其作為一種更緊湊的代碼風(fēng)格,使Java的語言表達(dá)能力得到了提升,需要的朋友可以參考下2023-05-05圖解Spring框架的設(shè)計(jì)理念與設(shè)計(jì)模式
這篇文章主要通過多圖詳細(xì)解釋Spring框架的設(shè)計(jì)理念與設(shè)計(jì)模式,需要的朋友可以參考下2015-08-08Java使用TCP套接字實(shí)現(xiàn)多人聊天功能詳解
這篇文章主要介紹了Java使用TCP套接字實(shí)現(xiàn)多人聊天功能,結(jié)合實(shí)例形式詳細(xì)分析了java使用socket通信實(shí)現(xiàn)tcp協(xié)議下的聊天功能客戶端與服務(wù)器端相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-10-10SpringBoot利用redis集成消息隊(duì)列的方法
這篇文章主要介紹了SpringBoot利用redis集成消息隊(duì)列的方法,需要的朋友可以參考下2017-08-08基于獲取JAVA路徑,包括CLASSPATH外的路徑的方法詳解
本篇文章是對(duì)獲取JAVA路徑,包括CLASSPATH外的路徑的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05Spring Cloud 部署時(shí)使用 Kubernetes 作為注冊(cè)中心和配置中
Spring Cloud Kubernetes提供了使用Kubernete本地服務(wù)的Spring Cloud通用接口實(shí)現(xiàn),這篇文章主要介紹了Spring Cloud 部署時(shí)如何使用 Kubernetes 作為注冊(cè)中心和配置中心,需要的朋友可以參考下2024-05-05Springboot+MybatisPlus實(shí)現(xiàn)帶驗(yàn)證碼的登錄
本文主要介紹了Springboot+MybatisPlus實(shí)現(xiàn)帶驗(yàn)證碼的登錄,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-05-05