Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(4)
承蒙各位厚愛(ài),我們一起每天進(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ì)說(shuō)一下重寫和重載:
這兩個(gè)都是多態(tài)的一種表現(xiàn)形式。
重載:
1、 重載是在編譯器通過(guò)方法中形參的靜態(tài)類型確定調(diào)用方法版本的過(guò)程。
2、 重載是多態(tài)在編譯期的表現(xiàn)形式
3、 重載的判定只有兩個(gè)條件(其他的條件都不能作為判定):
1、 方法名一致
2、形參列表不同
重寫:
1、重寫在方法運(yùn)行時(shí),通過(guò)調(diào)用者的實(shí)際類型來(lái)確定調(diào)用的方法版本。(具體細(xì)說(shuō),就是子父類中的重寫方法在對(duì)應(yīng)的class文件常量池的位置相同,一旦子類沒(méi)有重寫,那么子類的實(shí)例就會(huì)沿著這個(gè)位置往上找,直到找到父類的同名方法)
2、重寫只發(fā)生在可見(jiàn)的實(shí)例方法中:
1、靜態(tài)方法不存在重寫,形式上的重寫只能說(shuō)是隱藏。
2、私有方法也不存在重寫,父類中private的方法,子類中就算定義了,就是相當(dāng)于一個(gè)新的方法。
3、靜態(tài)方法和實(shí)例方法不存在相互重寫。
3、重寫滿足一個(gè)規(guī)則:兩同兩小一大
1、兩同:方法名和形參列表一致
2、兩?。褐貙懛椒ǖ姆祷刂担ㄒ妙愋停┖蛼伋霎惓#捅恢貙懛椒ǖ姆祷刂担ㄒ妙愋停┖蛼伋霎惓O嗤蛘呤瞧渥宇?。注意,一旦返回值是基本數(shù)據(jù)類型,那么重寫方法和被重寫方法必須相同,且不存在自動(dòng)拆裝箱的問(wèn)題。
3、一大:重寫方法的訪問(wèn)修飾符大于等于被重寫方法的訪問(wèn)修飾符。
B選項(xiàng)方法名、形參列表和返回值類型與題目完全一樣,故既不是重寫也不是重載
2、后端獲取數(shù)據(jù),向前端輸出過(guò)程中,以下描述正確的是
正確答案: D
對(duì)于前端過(guò)濾過(guò)的參數(shù),屬于可信數(shù)據(jù),可以直接輸出到前端頁(yè)面
對(duì)于從數(shù)據(jù)庫(kù)獲得的數(shù)據(jù),屬于可信數(shù)據(jù),可以直接輸出到前端頁(yè)面
對(duì)于從用戶上傳的Excel等文件解析出的數(shù)據(jù),屬于可信數(shù)據(jù),可以直接輸出到前端頁(yè)面
其它選項(xiàng)都不屬于可信數(shù)據(jù),輸出前應(yīng)該采用信息安全部發(fā)布的XSSFilter做進(jìn)行相應(yīng)編碼
題解:
后端獲取數(shù)據(jù),向前端輸出的過(guò)程中,輸出前應(yīng)該采用信息安全部發(fā)布的XSSFilter進(jìn)行相應(yīng)編碼。
3、在異常處理中,以下描述不正確的有
正確答案: D
try塊不可以省略
可以使用多重catch塊
finally塊可以省略
catch塊和finally塊可以同時(shí)省略
題解:
選D 假如try中有異常拋出,則會(huì)去執(zhí)行catch塊,再去執(zhí)行finally塊;假如沒(méi)有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() { …}
以上語(yǔ)句都可以用在類SmallCup中
題解:
1.題目說(shuō)了實(shí)現(xiàn),那么接口中的方法是抽象方法
2.接口中的抽象方法是public修飾
3.實(shí)現(xiàn)就意味著重寫,重寫的方法的權(quán)限不能小于被重寫的方法
4.而最大的權(quán)限是public,即public<=重寫的方法的權(quán)限<=public,即重寫的方法的權(quán)限只能為public
5、下面的程序?qū)?lái)打印什么?()
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的地址沒(méi)改變b的地址,所以b還是B
7、java語(yǔ)言的下面幾種數(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í)掃^(guò)期
在禁用Cookie時(shí)可以使用URL重寫技術(shù)跟蹤會(huì)話
隱藏表單域?qū)⒆侄翁砑拥紿TML表單并在客戶端瀏覽器中顯示
題解:
D:隱藏域在頁(yè)面中對(duì)于用戶(瀏覽器)是不可見(jiàn)的,在表單中插入隱藏域的目的在于收集或發(fā)送信息,以利于被處理表單的程序所使用。瀏覽者單擊發(fā)送按鈕發(fā)送表單的時(shí)候,隱藏域的信息也被一起發(fā)送到服務(wù)器。
9、關(guān)于Java內(nèi)存區(qū)域下列說(shuō)法不正確的有哪些
正確答案: 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編譯過(guò)程中產(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í)行語(yǔ)句時(shí),改變的是程序計(jì)數(shù)器的內(nèi)存空間,因此它不會(huì)發(fā)生內(nèi)存溢出 ,并且程序計(jì)數(shù)器是jvm虛擬機(jī)規(guī)范中唯一一個(gè)沒(méi)有規(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ī)棧中入棧到出棧的過(guò)程。 沒(méi)有類信息,類信息是在方法區(qū)中
C.java堆:對(duì)于絕大多數(shù)應(yīng)用來(lái)說(shuō),這塊區(qū)域是 JVM 所管理的內(nèi)存中最大的一塊。線程共享,主要是存放對(duì)象實(shí)例和數(shù)組
D.方法區(qū):屬于共享內(nèi)存區(qū)域,存儲(chǔ)已被虛擬機(jī)加載的類信息、常量、靜態(tài)變量、即時(shí)編譯器編譯后的代碼等數(shù)據(jù)。
10、下面的Java賦值語(yǔ)句哪些是有錯(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:沒(méi)毛病
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:沒(méi)分號(hào)啊
D:可以把任何一種數(shù)據(jù)類型的變量賦給Object類型的變量,因?yàn)閖ava所有類默認(rèn)繼承Object,基本數(shù)據(jù)類型賦值給Object會(huì)先裝箱,裝箱之后就是Object的子類了;
E:沒(méi)毛病,字符串中的\0被編譯為\u0000,表示一個(gè)空字符。
F:注意:double d=100,這樣沒(méi)毛病,但是題中是Double啊,會(huì)自動(dòng)裝箱, 裝箱過(guò)程中調(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é)
本篇文章就到這里了,希望能給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
Mybatis中使用萬(wàn)能的Map傳參實(shí)現(xiàn)
在編程中,有可能遇到我們的實(shí)體類或者數(shù)據(jù)庫(kù)中表的字段或參數(shù)過(guò)多的情況,那這時(shí)候用Map傳參是比較理想的選擇,本文就詳細(xì)的介紹一下如何使用,感興趣的可以了解下2021-07-07
SpringBoot實(shí)現(xiàn)文件上傳并返回url鏈接的示例代碼
文件上傳,當(dāng)我們選擇了某一個(gè)圖片文件之后,這個(gè)文件就會(huì)上傳到服務(wù)器,從而完成文件上傳的操作,是指將本地圖片、視頻、音頻等文件上傳到服務(wù)器,供其他用戶瀏覽或下載的過(guò)程,本文給大家介紹了SpringBoot實(shí)現(xiàn)文件上傳并返回url鏈接,需要的朋友可以參考下2024-11-11
swing組件JScrollPane滾動(dòng)條實(shí)例代碼
這篇文章主要介紹了swing組件JScrollPane滾動(dòng)條實(shí)例代碼,分享了兩個(gè)相關(guān)代碼示例,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-02-02
SpringCloud Gateway自定義filter獲取body中的數(shù)據(jù)為空的問(wèn)題
這篇文章主要介紹了SpringCloud Gateway自定義filter獲取body中的數(shù)據(jù)為空,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10
淺談Mybatis Plus的BaseMapper的方法是如何注入的
我們?cè)谟玫臅r(shí)候經(jīng)常就是生產(chǎn)自定義的Mapper繼承自BaseMapper,那么BaseMapper怎么被注入到mybatis里的,本文就詳細(xì)的介紹一下,感興趣的可以了解一下2021-09-09
SpringBoot集成SpringSecurity安全框架方式
這篇文章主要介紹了SpringBoot集成SpringSecurity安全框架方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05

