Java日常練習(xí)題,每天進(jìn)步一點點(43)
承蒙各位厚愛,我們一起每天進(jìn)步一點點?。ㄊ髽?biāo)選中空白處查看答案)
1、在異常處理中,若try中的代碼可能產(chǎn)生多種異常則可以對應(yīng)多個catch語句,若catch中的參數(shù)類型有父類子類關(guān)系,此時應(yīng)該將父類放在后面,子類放在前面。
正確答案: A
正確
錯誤
題解:
首先所有異常都是Exception的子類。
比如用Exception
因為所有異常都是Exception的子類,如果你把Exception放在前邊捕獲,后邊的catch將永遠(yuǎn)不會執(zhí)行
2、下面有關(guān)servlet中init,service,destroy方法描述錯誤的是?
正確答案: D
init()方法是servlet生命的起點。一旦加載了某個servlet,服務(wù)器將立即調(diào)用它的init()方法
service()方法處理客戶機(jī)發(fā)出的所有請求
destroy()方法標(biāo)志servlet生命周期的結(jié)束
servlet在多線程下使用了同步機(jī)制,因此,在并發(fā)編程下servlet是線程安全的
題解:
servlet在多線程下其本身并不是線程安全的。
如果在類中定義成員變量,而在service中根據(jù)不同的線程對該成員變量進(jìn)行更改,那么在并發(fā)的時候就會引起錯誤。最好是在方法中,定義局部變量,而不是類變量或者對象的成員變量。由于方法中的局部變量是在棧中,彼此各自都擁有獨立的運行空間而不會互相干擾,因此才做到線程安全。
3、以下描述錯誤的一項是( )?
正確答案: C
程序計數(shù)器是一個比較小的內(nèi)存區(qū)域,用于指示當(dāng)前線程所執(zhí)行的字節(jié)碼執(zhí)行 到了第幾行,是線程隔離的
原則上講,所有的對象都是在堆區(qū)上分配內(nèi)存,是線程之間共享的
方法區(qū)用于存儲JVM加載的類信息、常量、靜態(tài)變量,即使編譯器編譯后的代碼等數(shù)據(jù),是線程隔離的
Java方法執(zhí)行內(nèi)存模型,用于存儲局部變量,操作數(shù)棧,動態(tài)鏈接,方法出口等信息,是線程隔離的
題解:
方法區(qū)和堆內(nèi)存是線程共享的。
程序計數(shù)器、虛擬機(jī)棧、本地方法棧是線程隔離的。
Java運行時內(nèi)存
1.程序計數(shù)器,線程私有。可以看作是當(dāng)前線程所執(zhí)行的字節(jié)碼的行號指示器,字節(jié)碼解釋器工作時就是通過改變整個計數(shù)器的值來選取下一條需要執(zhí)行的字節(jié)碼指令,分支、循環(huán)、跳轉(zhuǎn)、異常處理、線程恢復(fù)等功能。
由于JVM的多線程是通過線程輪流切換并分配處理器執(zhí)行時間的方式來實現(xiàn)的,在任何一個確定的時刻,一個處理器(對于多核處理器來說是一個內(nèi)核)都只會執(zhí)行一條線程中的指令。因此為了線程切換后能恢復(fù)到正確的執(zhí)行位置,每條線程都需要一個獨立的程序計數(shù)器,各條線程之間計數(shù)器互不影響,獨立存儲,所以線程私有。
程序計數(shù)器是唯一一個在Java虛擬機(jī)規(guī)范中沒有規(guī)定任何OOM的區(qū)域。
2.Java虛擬機(jī)棧,線程私有。生命周期和線程相同。虛擬機(jī)棧描述的是Java方法執(zhí)行的內(nèi)存模型,每個方法在執(zhí)行的同時都會創(chuàng)建一個棧幀。每個方法從調(diào)用到執(zhí)行完成的過程,就對應(yīng)著一個棧幀在虛擬機(jī)中入棧到出棧的過程。
3.本地方法棧,線程私有。和虛擬機(jī)棧的區(qū)別就在于一個是為了執(zhí)行Java方法服務(wù),一個是為了虛擬機(jī)使用到的Native方法服務(wù)。
4.堆,線程共享。存放對象實例和數(shù)組。
5.方法區(qū),線程共享。存放已經(jīng)被JVM加載的類信息,常量,靜態(tài)變量,即時編譯器編譯后的代碼。
4、JSP 表達(dá)式的寫法:
正確答案: C
<% expression %>
<=% expression %>
<%= expression %>
<expression/>
題解:
(1)<%…%>:可以插入一些語句。
(2)<%! … %>:只能放置全局變量、全局常量、類、函數(shù)。
(3)<%= … %>:只能放置一個變量、常量。
5、Panel 和 Applet 的默認(rèn)布局管理器是( )
正確答案: B
CardLayout
FlowLayout
BorderLayout
GridLayout
題解:
BorderLayout布局管理器,是Frame默認(rèn)布局管理器,它是一個布置容器的邊框布局,它可以對容器 組件 進(jìn)行安排,并調(diào)整其大小,使其符合下列五個區(qū)域:北、南、東、西、中。每個區(qū)域最多只能包含一個組件,并通過相應(yīng)的常量進(jìn)行標(biāo)識:NORTH、SOUTH、EAST、WEST、CENTER。
FlowLayout流式布局管理器,是Panel和Applet默認(rèn)布局管理器,它具有指定的對齊方式以及指定的水平和垂直間隙。
GridLayout布局管理器,GridLayout(int rows,int cols,int hgap,int vgap);建立一個表格的版面對象。rows代表有幾行,cols代表有幾列;hgap是組件之間的水平距離,vgap是組件之間的豎直距離。
6、What will be printed when you execute the following code?
class C {
C() {
System.out.print("C");
}
}
class A {
C c = new C();
A() {
this("A");
System.out.print("A");
}
A(String s) {
System.out.print(s);
}
}
class Test extends A {
Test() {
super("B");
System.out.print("B");
}
public static void main(String[] args) {
new Test();
}
}
正確答案: B
BB
CBB
BAB
None of the above
題解:
初始化過程是這樣的:
1.首先,初始化父類中的靜態(tài)成員變量和靜態(tài)代碼塊,按照在程序中出現(xiàn)的順序初始化;
2.然后,初始化子類中的靜態(tài)成員變量和靜態(tài)代碼塊,按照在程序中出現(xiàn)的順序初始化;
3.其次,初始化父類的普通成員變量和代碼塊,在執(zhí)行父類的構(gòu)造方法;
4.最后,初始化子類的普通成員變量和代碼塊,在執(zhí)行子類的構(gòu)造方法;
(1)初始化父類的普通成員變量和代碼塊,執(zhí)行 C c = new C(); 輸出C
(2)super(“B”); 表示調(diào)用父類的構(gòu)造方法,不調(diào)用父類的無參構(gòu)造函數(shù),輸出B
(3) System.out.print(“B”);
所以輸出CBB
7、下列選項中是正確的方法聲明的是?()
正確答案: A B C D
protected abstract void f1();
public final void f1() {}
static final void fq(){}
private void f1() {}
題解:
A:抽象方法只可以被public 和 protected修飾;
B:final可以修飾類、方法、變量,分別表示:該類不可繼承、該方法不能重寫、該變量是常量
C:static final 可以表達(dá)在一起來修飾方法,表示是該方法是靜態(tài)的不可重寫的方法
D:private 修飾方法(這太常見的)表示私有方法,本類可以訪問,外界不能訪問
8、Java是一門支持反射的語言,基于反射為Java提供了豐富的動態(tài)性支持,下面關(guān)于Java反射的描述,哪些是錯誤的:( )
正確答案: A D F
A:Java反射主要涉及的類如Class, Method, Filed,等,他們都在java.lang.reflet包下
B:通過反射可以動態(tài)的實現(xiàn)一個接口,形成一個新的類,并可以用這個類創(chuàng)建對象,調(diào)用對象方法
C:通過反射,可以突破Java語言提供的對象成員、類成員的保護(hù)機(jī)制,訪問一般方式不能訪問的成員
D:Java反射機(jī)制提供了字節(jié)碼修改的技術(shù),可以動態(tài)的修剪一個類
E:Java的反射機(jī)制會給內(nèi)存帶來額外的開銷。例如對永生堆的要求比不通過反射要求的更多
F:Java反射機(jī)制一般會帶來效率問題,效率問題主要發(fā)生在查找類的方法和字段對象,因此通過緩存需要反射類的字段和方法就能達(dá)到與之間調(diào)用類的方法和訪問類的字段一樣的效率
題解:
A Class類在java.lang包
B 動態(tài)代理技術(shù)可以動態(tài)創(chuàng)建一個代理對象,反射不行
C 反射訪問私有成員時,F(xiàn)ield調(diào)用setAccessible可解除訪問符限制
D CGLIB實現(xiàn)了字節(jié)碼修改,反射不行
E 反射會動態(tài)創(chuàng)建額外的對象,比如每個成員方法只有一個Method對象作為root,他不胡直接暴露給用戶。調(diào)用時會返回一個Method的包裝類
F 反射帶來的效率問題主要是動態(tài)解析類,JVM沒法對反射代碼優(yōu)化。
9、在Java中下面Class的聲明哪些是錯誤的?
正確答案: A B C
A:
public abstract final class Test {
abstract void method();
}
B:
public abstract class Test {
abstract final void method();
}
C:
public abstract class Test {
abstract void method() {
}
}
D:
public class Test {
final void method() {
}
}
題解:
A、final修飾的類為終態(tài)類,不能被繼承,而 抽象類是必須被繼承的才有其意義的,因此,final是不能用來修飾抽象類的。
B、 final修飾的方法為終態(tài)方法,不能被重寫。而繼承抽象類,必須重寫其方法。
C、抽象方法是僅聲明,并不做實現(xiàn)的方法。
10、以下哪些方法可以取到http請求中的cookie值()?
正確答案: B D
request.getAttribute
request.getHeader
request.getParameter
request.getCookies
題解:
下面的方法可用在 Servlet 程序中讀取 HTTP 頭。這些方法通過 HttpServletRequest 對象可用:
1)Cookie[] getCookies()
返回一個數(shù)組,包含客戶端發(fā)送該請求的所有的 Cookie 對象。
2)Object getAttribute(String name)
以對象形式返回已命名屬性的值,如果沒有給定名稱的屬性存在,則返回 null。
3)String getHeader(String name)
以字符串形式返回指定的請求頭的值。Cookie也是頭的一種;
4)String getParameter(String name)
以字符串形式返回請求參數(shù)的值,或者如果參數(shù)不存在則返回 null。
答案匯總:
1、正確答案: A
2、正確答案: D
3、正確答案: C
4、正確答案: C
5、正確答案: B
6、正確答案: B
7、正確答案: A B C D
8、正確答案: A D F
9、正確答案: A B C
10、正確答案: B D
總結(jié)
本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
Spring?AI?+?ollama?本地搭建聊天?AI?功能
這篇文章主要介紹了Spring?AI?+?ollama?本地搭建聊天?AI?,本文通過實例圖文相結(jié)合給大家講解的非常詳細(xì),需要的朋友可以參考下2024-11-11
Java程序開發(fā)中abstract 和 interface的區(qū)別詳解
abstract class和interface在Java語言中都是用來進(jìn)行抽象類。但是兩者有什么區(qū)別呢,接下來小編給大家?guī)砹薬bstract 和 interface的區(qū)別詳解,感興趣的朋友一起學(xué)習(xí)吧2016-06-06
java使用RSA加密方式實現(xiàn)數(shù)據(jù)加密解密的代碼
這篇文章給大家分享java使用RSA加密方式實現(xiàn)數(shù)據(jù)加密解密,通過實例代碼文字相結(jié)合給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友參考下2019-11-11
Java中controller層如何接收帶參數(shù)的查詢
本文主要介紹了Java中controller層如何接收帶參數(shù)的查詢,在控制器層接收帶參數(shù)的查詢可以通過多種方式實現(xiàn),下面就詳細(xì)的介紹一下,感興趣的可以了解一下2023-08-08
Java弱鍵集合WeakHashMap及ConcurrentCache原理詳解
這篇文章主要介紹了Java弱鍵集合WeakHashMap及ConcurrentCache原理詳解,基于哈希表的Map接口實現(xiàn),支持null鍵和值,但是WeakHashMap具有弱鍵,可用來實現(xiàn)緩存存儲,在進(jìn)行GC的時候會自動回收鍵值對,需要的朋友可以參考下2023-09-09
Java 后端接收Request請求參數(shù)的多種方式匯總
本文給大家總結(jié)了后端接收Request請求參數(shù)的7種方式,本文結(jié)合實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2023-10-10

