Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(4)
承蒙各位厚愛,我們一起每天進(jìn)步一點(diǎn)點(diǎn)?。ㄊ髽?biāo)選中空白處查看答案)
1、類 ABC 定義如下:
public class ABC{
public int max( int a, int b) { }
}
將以下哪個(gè)方法插入行 3 是不合法的。( )。
正確答案: B
public float max(float a, float b, float c){ }
public int max (int c, int d){ }
public float max(float a, float b){ }
private int max(int a, int b, int c){ }
題解:
注意是不合法,這題考察重載
細(xì)說一下重寫和重載:
這兩個(gè)都是多態(tài)的一種表現(xiàn)形式。
重載:
1、 重載是在編譯器通過方法中形參的靜態(tài)類型確定調(diào)用方法版本的過程。
2、 重載是多態(tài)在編譯期的表現(xiàn)形式
3、 重載的判定只有兩個(gè)條件(其他的條件都不能作為判定):
1、 方法名一致
2、形參列表不同
重寫:
1、重寫在方法運(yùn)行時(shí),通過調(diào)用者的實(shí)際類型來確定調(diào)用的方法版本。(具體細(xì)說,就是子父類中的重寫方法在對(duì)應(yīng)的class文件常量池的位置相同,一旦子類沒有重寫,那么子類的實(shí)例就會(huì)沿著這個(gè)位置往上找,直到找到父類的同名方法)
2、重寫只發(fā)生在可見的實(shí)例方法中:
1、靜態(tài)方法不存在重寫,形式上的重寫只能說是隱藏。
2、私有方法也不存在重寫,父類中private的方法,子類中就算定義了,就是相當(dāng)于一個(gè)新的方法。
3、靜態(tài)方法和實(shí)例方法不存在相互重寫。
3、重寫滿足一個(gè)規(guī)則:兩同兩小一大
1、兩同:方法名和形參列表一致
2、兩?。褐貙懛椒ǖ姆祷刂担ㄒ妙愋停┖蛼伋霎惓#捅恢貙懛椒ǖ姆祷刂担ㄒ妙愋停┖蛼伋霎惓O嗤蛘呤瞧渥宇?。注意,一旦返回值是基本數(shù)據(jù)類型,那么重寫方法和被重寫方法必須相同,且不存在自動(dòng)拆裝箱的問題。
3、一大:重寫方法的訪問修飾符大于等于被重寫方法的訪問修飾符。
B選項(xiàng)方法名、形參列表和返回值類型與題目完全一樣,故既不是重寫也不是重載
2、后端獲取數(shù)據(jù),向前端輸出過程中,以下描述正確的是
正確答案: D
對(duì)于前端過濾過的參數(shù),屬于可信數(shù)據(jù),可以直接輸出到前端頁面
對(duì)于從數(shù)據(jù)庫(kù)獲得的數(shù)據(jù),屬于可信數(shù)據(jù),可以直接輸出到前端頁面
對(duì)于從用戶上傳的Excel等文件解析出的數(shù)據(jù),屬于可信數(shù)據(jù),可以直接輸出到前端頁面
其它選項(xiàng)都不屬于可信數(shù)據(jù),輸出前應(yīng)該采用信息安全部發(fā)布的XSSFilter做進(jìn)行相應(yīng)編碼
題解:
后端獲取數(shù)據(jù),向前端輸出的過程中,輸出前應(yīng)該采用信息安全部發(fā)布的XSSFilter進(jìn)行相應(yīng)編碼。
3、在異常處理中,以下描述不正確的有
正確答案: D
try塊不可以省略
可以使用多重catch塊
finally塊可以省略
catch塊和finally塊可以同時(shí)省略
題解:
選D 假如try中有異常拋出,則會(huì)去執(zhí)行catch塊,再去執(zhí)行finally塊;假如沒有catch 塊,可以直接執(zhí)行finally 塊,方法就以拋出異常的方式結(jié)束,而finally 后的內(nèi)容也不會(huì)被執(zhí)行,所以catch 和 finally 不能同時(shí)省略。
4、如果一個(gè)接口Cup有個(gè)方法use(),有個(gè)類SmallCup實(shí)現(xiàn)接口Cup,則在類SmallCup中正確的是? ( )
正確答案: C
void use() { …}
protected void use() { …}
public void use() { …}
以上語句都可以用在類SmallCup中
題解:
1.題目說了實(shí)現(xiàn),那么接口中的方法是抽象方法
2.接口中的抽象方法是public修飾
3.實(shí)現(xiàn)就意味著重寫,重寫的方法的權(quán)限不能小于被重寫的方法
4.而最大的權(quán)限是public,即public<=重寫的方法的權(quán)限<=public,即重寫的方法的權(quán)限只能為public
5、下面的程序?qū)泶蛴∈裁?#63;()
public class TestIncr {
public static void main(String args[]) {
int i = 0;
i = i++ + i;
System.out.println(“I =” +i);
}
}
正確答案: A
I = 1
I = 2
I = 3
編譯出錯(cuò)
題解:
首先,在 i = i++ + i 中,先執(zhí)行的是 i++ ,此時(shí)式子可為 i = 0 + i
然后再進(jìn)行后一步 +i ,因?yàn)榍懊鎴?zhí)行了 i++ ,所以這個(gè) i 的值已經(jīng) +1 了
那么最后這個(gè)式子就是 i = 0 + 1
6、執(zhí)行以下程序后的輸出結(jié)果是()
public class Test {
public static void main(String[] args) {
StringBuffer a = new StringBuffer(“A”);
StringBuffer b = new StringBuffer(“B”);
operator(a, b);
System.out.println(a + “,” + b);
}
public static void operator(StringBuffer x, StringBuffer y) {
x.append(y); y = x;
}
}
正確答案: D
A,A
A,B
B,B
AB,B
題解:
a和x是同個(gè)地址,b和y是同個(gè)地址,然后執(zhí)行x.append(y)就把y的值放在x的地址里面此時(shí)a地址和x是同一個(gè)所以a就是AB了,接著執(zhí)行y=x是把x的地址給y,這時(shí)候axy屬于同一個(gè)地址。所以y=x 只是改變了y的地址沒改變b的地址,所以b還是B
7、java語言的下面幾種數(shù)組復(fù)制方法中,哪個(gè)效率最高?
正確答案: B
for 循環(huán)逐一復(fù)制
System.arraycopy
Array.copyOf
使用clone方法
題解:
從速度上看:System.arraycopy > clone > Arrays.copyOf > for
System.arraycopy():native方法+JVM手寫函數(shù),在JVM里預(yù)寫好速度最快
clone():native方法,但并未手寫,需要JNI轉(zhuǎn)換,速度其次
Arrays.copyof():本質(zhì)是調(diào)用1的方法
for():全是深復(fù)制,并且不是封裝方法,最慢情有可原
8、有關(guān)會(huì)話跟蹤技術(shù)描述正確的是()
正確答案: A B C
Cookie是Web服務(wù)器發(fā)送給客戶端的一小段信息,客戶端請(qǐng)求時(shí),可以讀取該信息發(fā)送到服務(wù)器端
關(guān)閉瀏覽器意味著臨時(shí)會(huì)話ID丟失,但所有與原會(huì)話關(guān)聯(lián)的會(huì)話數(shù)據(jù)仍保留在服務(wù)器上,直至?xí)掃^期
在禁用Cookie時(shí)可以使用URL重寫技術(shù)跟蹤會(huì)話
隱藏表單域?qū)⒆侄翁砑拥紿TML表單并在客戶端瀏覽器中顯示
題解:
D:隱藏域在頁面中對(duì)于用戶(瀏覽器)是不可見的,在表單中插入隱藏域的目的在于收集或發(fā)送信息,以利于被處理表單的程序所使用。瀏覽者單擊發(fā)送按鈕發(fā)送表單的時(shí)候,隱藏域的信息也被一起發(fā)送到服務(wù)器。
9、關(guān)于Java內(nèi)存區(qū)域下列說法不正確的有哪些
正確答案: B C
程序計(jì)數(shù)器是一塊較小的內(nèi)存空間,它的作用可以看做是當(dāng)前線程所執(zhí)行的字節(jié)碼的信號(hào)指示器,每個(gè)線程都需要一個(gè)獨(dú)立的
程序計(jì)數(shù)器.
Java虛擬機(jī)棧描述的是java方法執(zhí)行的內(nèi)存模型,每個(gè)方法被執(zhí)行的時(shí)候都會(huì)創(chuàng)建一個(gè)棧幀,用于存儲(chǔ)局部變量表、類信息、
動(dòng)態(tài)鏈接等信息
Java堆是java虛擬機(jī)所管理的內(nèi)存中最大的一塊,每個(gè)線程都擁有一塊內(nèi)存區(qū)域,所有的對(duì)象實(shí)例以及數(shù)組都在這里分配內(nèi)存。
方法區(qū)是各個(gè)線程共享的內(nèi)存區(qū)域,它用于存儲(chǔ)已經(jīng)被虛擬機(jī)加載的常量、即時(shí)編譯器編譯后的代碼、靜態(tài)變量等數(shù)據(jù)。
題解:
B.類信息不是存儲(chǔ)在java虛擬機(jī)棧中,而是存儲(chǔ)在方法區(qū)中;
C.java堆是被所有線程共享的一塊內(nèi)存區(qū)域,而不是每個(gè)線程都擁有一塊內(nèi)存區(qū)域。
A.程序計(jì)數(shù)器是一塊較小的內(nèi)存空間,它的作用可以看做是當(dāng)前線程所執(zhí)行的字節(jié)碼的信號(hào)指示器(偏移地址),Java編譯過程中產(chǎn)生的字節(jié)碼有點(diǎn)類似編譯原理的指令,程序計(jì)數(shù)器的內(nèi)存空間存儲(chǔ)的是當(dāng)前執(zhí)行的字節(jié)碼的偏移地址,每一個(gè)線程都有一個(gè)獨(dú)立的程序計(jì)數(shù)器(程序計(jì)數(shù)器的內(nèi)存空間是線程私有的),因?yàn)楫?dāng)執(zhí)行語句時(shí),改變的是程序計(jì)數(shù)器的內(nèi)存空間,因此它不會(huì)發(fā)生內(nèi)存溢出 ,并且程序計(jì)數(shù)器是jvm虛擬機(jī)規(guī)范中唯一一個(gè)沒有規(guī)定 OutOfMemoryError 異常 的區(qū)域;
B.java虛擬機(jī)棧:線程私有,生命周期和線程一致。描述的是 Java 方法執(zhí)行的內(nèi)存模型:每個(gè)方法在執(zhí)行時(shí)都會(huì)床創(chuàng)建一個(gè)棧幀(Stack Frame)用于存儲(chǔ)局部變量表、操作數(shù)棧、動(dòng)態(tài)鏈接、方法出口等信息。每一個(gè)方法從調(diào)用直至執(zhí)行結(jié)束,就對(duì)應(yīng)著一個(gè)棧幀從虛擬機(jī)棧中入棧到出棧的過程。 沒有類信息,類信息是在方法區(qū)中
C.java堆:對(duì)于絕大多數(shù)應(yīng)用來說,這塊區(qū)域是 JVM 所管理的內(nèi)存中最大的一塊。線程共享,主要是存放對(duì)象實(shí)例和數(shù)組
D.方法區(qū):屬于共享內(nèi)存區(qū)域,存儲(chǔ)已被虛擬機(jī)加載的類信息、常量、靜態(tài)變量、即時(shí)編譯器編譯后的代碼等數(shù)據(jù)。
10、下面的Java賦值語句哪些是有錯(cuò)誤的 ()
正確答案: B C F
A:int i =1000;
B:float f = 45.0;
C:char s = ‘\u0639'
D:Object o = ‘f';
E:String s = “hello,world\0”;
F:Double d = 100;
題解:
A:沒毛病
B:小數(shù)默認(rèn)雙精度(double)的,賦值給浮點(diǎn)型(float)屬下轉(zhuǎn)型,會(huì)造成精度損失,需要強(qiáng)制類型轉(zhuǎn)換float f =(float)45.0; 或者寫成float f =45.0F;。
C:沒分號(hào)啊
D:可以把任何一種數(shù)據(jù)類型的變量賦給Object類型的變量,因?yàn)閖ava所有類默認(rèn)繼承Object,基本數(shù)據(jù)類型賦值給Object會(huì)先裝箱,裝箱之后就是Object的子類了;
E:沒毛病,字符串中的\0被編譯為\u0000,表示一個(gè)空字符。
F:注意:double d=100,這樣沒毛病,但是題中是Double啊,會(huì)自動(dòng)裝箱, 裝箱過程中調(diào)用的是Double類的valueOf( double d )方法, 而這里是100為int型, 所以編譯會(huì)“cannot convert from int to Double”
答案匯總:
1、正確答案: B
2、正確答案: D
3、正確答案: D
4、正確答案: C
5、正確答案: A
6、正確答案: D
7、正確答案: B
8、正確答案: A B C
9、正確答案: B C
10、正確答案: B C F
總結(jié)
本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
Java如何將若干時(shí)間區(qū)間進(jìn)行合并的方法步驟
這篇文章主要介紹了Java如何將若干時(shí)間區(qū)間進(jìn)行合并的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02
Java 數(shù)據(jù)結(jié)構(gòu)線性表之順序存儲(chǔ)詳解原理
線性表的順序存儲(chǔ)是指用一組地址連續(xù)的存儲(chǔ)單元依次存儲(chǔ)線性表中的各個(gè)元素、使得線性表中在邏輯結(jié)構(gòu)上相鄰的數(shù)據(jù)元素存儲(chǔ)在相鄰的物理存儲(chǔ)單元中,即通過數(shù)據(jù)元素物理存儲(chǔ)的相鄰關(guān)系來反映數(shù)據(jù)元素之間邏輯上的相鄰關(guān)系2021-10-10
使用java實(shí)現(xiàn)Xmodem協(xié)議
這篇文章主要介紹了使用java實(shí)現(xiàn)Xmodem協(xié)議的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12
詳解基于Spring Cloud幾行配置完成單點(diǎn)登錄開發(fā)
這篇文章主要介紹了詳解基于Spring Cloud幾行配置完成單點(diǎn)登錄開發(fā),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-02-02
Java中的 FilterInputStream簡(jiǎn)介_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
FilterInputStream 的作用是用來“封裝其它的輸入流,并為它們提供額外的功能”。接下來通過本文給大家分享Java中的 FilterInputStream簡(jiǎn)介,感興趣的朋友一起學(xué)習(xí)吧2017-05-05
spring boot springMVC擴(kuò)展配置實(shí)現(xiàn)解析
這篇文章主要介紹了spring boot springMVC擴(kuò)展配置實(shí)現(xiàn)解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08
Java配置JDK開發(fā)環(huán)境及環(huán)境變量
這篇文章主要為大家詳細(xì)介紹了Java配置JDK開發(fā)環(huán)境及環(huán)境變量,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09
詳解spring cloud hystrix請(qǐng)求緩存(request cache)
這篇文章主要介紹了詳解spring cloud hystrix請(qǐng)求緩存(request cache),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-05-05

