Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(21)
承蒙各位厚愛(ài),我們一起每天進(jìn)步一點(diǎn)點(diǎn)?。ㄊ髽?biāo)選中空白處查看答案)
1、下面關(guān)于構(gòu)造方法的說(shuō)法不正確的是 ()
正確答案: B
構(gòu)造方法也屬于類的方法,可以創(chuàng)建對(duì)象的時(shí)候給成員變量賦值
構(gòu)造方法不可以重載
構(gòu)造方法沒(méi)有返回值
構(gòu)造方法一定要和類名相同
題解:
1.構(gòu)造方法也是類的方法,可以在創(chuàng)建對(duì)象時(shí)為成員變量賦值
2.構(gòu)造方法可以進(jìn)行重載,但是參數(shù)列表必須不相同,不以返回值和訪問(wèn)級(jí)別進(jìn)行區(qū)分
3.構(gòu)造方法沒(méi)有返回值
4.構(gòu)造方法一定要與定義為public的類同名
2、以下多線程對(duì)int型變量x的操作,哪個(gè)不需要進(jìn)行同步( )
正確答案: D
x=y;
x++;
++x;
x=1;
題解:
A.由于y的值不確定,所以要加鎖;
B,C 兩個(gè)在多線程情況下是必須要加鎖的,因?yàn)樗麄兪窍缺蛔x入寄存器,然后再進(jìn)行+1操作,如果沒(méi)有加鎖,那么可能會(huì)出現(xiàn)數(shù)據(jù)異常;
D 原子操作,所以不需要加鎖
原子性:指該操作不能再繼續(xù)劃分為更小的操作。
Java中的原子操作包括:
1、除long和double之外的基本類型的賦值操作
2、所有引用reference的賦值操作
3、java.concurrent.Atomic. * 包中所有類的一切操作
3、運(yùn)行下面代碼,輸出的結(jié)果是()
class A { public A() { System.out.println("class A"); } { System.out.println("I'm A class"); } static { System.out.println("class A static"); } } public class B extends A { public B() { System.out.println("class B"); } { System.out.println("I'm B class"); } static { System.out.println("class B static"); } public static void main(String[] args) { new B(); } }
正確答案: A
A:class A static
class B static
I'm A class
class A
I'm B class
class B
手動(dòng)分割
B:class A static
I'm A class
class A
class B static
I'm B class
class B
手動(dòng)分割
C:class A static
class B static
class A
I'm A class
class B
I'm B class
手動(dòng)分割
D:class A static
class A
I'm A class
class B static
class B
I'm B class
題解:
父類靜態(tài)代碼塊–>子類靜態(tài)代碼塊–>父類普通代碼塊–>父類構(gòu)造方法–>子類代碼塊–>子類構(gòu)造方法;
Java程序初始化順序:
1.父類的靜態(tài)代碼塊
2.子類的靜態(tài)代碼塊
3.父類的普通代碼塊
4.父類的構(gòu)造方法
5.子類的普通代碼塊
6.子類的構(gòu)造方法
4、下面的程序 編譯運(yùn)行后,在屏幕上顯示的結(jié)果是()
public class test {
public static void main(String args[]) {
int x,y;
x=5>>2;
y=x>>>2;
System.out.println(y);
}
}
正確答案: A
0
2
5
80
題解:
5 >> 2 相當(dāng)于 5除以4(2的平方),等于1 ,>>> 表示無(wú)符號(hào) 右移,高位用0 填充,0001 右移兩位 0000,所以答案選 A
5、Which lines of the following will produce an error?
1.byte a1 = 2, a2 = 4, a3;
2.short s = 16;
3.a2 = s;
4.a3 = a1 * a2;
正確答案: A
Line 3 and Line 4
Line 1 only
Line 3 only
Line 4 only
題解:
short類型轉(zhuǎn)為byte類型出錯(cuò)
a1 * a2結(jié)果為int類型,轉(zhuǎn)為byte類型出錯(cuò)
數(shù)值型變量在默認(rèn)情況下為Int型,byte和short型在計(jì)算時(shí)會(huì)自動(dòng)轉(zhuǎn)換為int型計(jì)算,結(jié)果也是int 型。所以a1*a2的結(jié)果是int 型的。
byte+byte=int,低級(jí)向高級(jí)是隱式類型轉(zhuǎn)換,高級(jí)向低級(jí)必須強(qiáng)制類型轉(zhuǎn)換,byte<char<short<int<long<float<double
6、JSP分頁(yè)代碼中,哪個(gè)步驟次序是正確的?
正確答案: A
先取總記錄數(shù),得到總頁(yè)數(shù),最后顯示本頁(yè)的數(shù)據(jù)。
先取所有的記錄,得到總頁(yè)數(shù),再取總記錄數(shù),最后顯示本頁(yè)的數(shù)據(jù)。
先取總頁(yè)數(shù),得到總記錄數(shù),再取所有的記錄,最后顯示本頁(yè)的數(shù)據(jù)。
先取本頁(yè)的數(shù)據(jù),得到總頁(yè)數(shù),再取總記錄數(shù),最后顯示所有的記錄。
7、下面哪個(gè)不對(duì)?
正確答案: C
A:RuntimeException is the superclass of those exceptions that can be thrown during the normal operation of the Java Virtual Machine.
B:A method is not required to declare in its throws clause any subclasses of RuntimeExeption that might be thrown during the execution of the method but not caught
C:An RuntimeException is a subclass of Throwable that indicates serious problems that a reasonable application should not try to catch.
D:NullPointerException is one kind of RuntimeException
翻譯:
A:RuntimeException是那些可以在Java虛擬機(jī)正常運(yùn)行期間拋出的異常的超類。
B:方法不需要在其throws子句中聲明任何可能在方法執(zhí)行期間拋出但未被捕獲的runtimeexception子類
C: RuntimeException是Throwable的一個(gè)子類,它指示一個(gè)合理的應(yīng)用程序不應(yīng)該試圖捕獲的嚴(yán)重問(wèn)題。
D:NullPointerException是一種RuntimeException
題解:
A選項(xiàng)是RuntimeException的定義;
B選項(xiàng)是把Error的第二段定義拿來(lái)改掉換成RuntimeException,但這樣說(shuō)對(duì)于RuntimeException也沒(méi)錯(cuò);
C選項(xiàng)也是把Error的定義換成了RuntimeException,但這里的"indicates serious problems"不應(yīng)該用在RuntimeException上,Error才表示嚴(yán)重的錯(cuò)誤,RuntimeException并不是.
D選項(xiàng)顯然.
運(yùn)行時(shí)異常: 都是RuntimeException類及其子類異常,如NullPointerException(空指針異常)、IndexOutOfBoundsException(下標(biāo)越界異常)等,這些異常是不檢查異常,程序中可以選擇捕獲處理,也可以不處理。這些異常一般是由程序邏輯錯(cuò)誤引起的,程序應(yīng)該從邏輯角度盡可能避免這類異常的發(fā)生。
運(yùn)行時(shí)異常的特點(diǎn)是Java編譯器不會(huì)檢查它,也就是說(shuō),當(dāng)程序中可能出現(xiàn)這類異常,即使沒(méi)有用try-catch語(yǔ)句捕獲它,也沒(méi)有用throws子句聲明拋出它,也會(huì)編譯通過(guò)。
非運(yùn)行時(shí)異常 (編譯異常): 是RuntimeException以外的異常,類型上都屬于Exception類及其子類。從程序語(yǔ)法角度講是必須進(jìn)行處理的異常,如果不處理,程序就不能編譯通過(guò)。如IOException、SQLException等以及用戶自定義的Exception異常,一般情況下不自定義檢查異常。
8、下面代碼將輸出什么內(nèi)容:()
public class SystemUtil{
public static boolean isAdmin(String userId){
return userId.toLowerCase()==“admin”;
}
public static void main(String[] args){
System.out.println(isAdmin(“Admin”));
}
}
正確答案: B
true
false
1
編譯錯(cuò)誤
題解:
equals和==的區(qū)別 :
==操作比較的是兩個(gè)變量的值是否相等,對(duì)于引用型變量表示的是兩個(gè)變量在堆中存儲(chǔ)的地址是否相同,即棧中的內(nèi)容是否相同。
equals比較的才是內(nèi)容,所以返回false
9、關(guān)于Java中的數(shù)組,下面的一些描述,哪些描述是準(zhǔn)確的:( )
正確答案: A C F
A數(shù)組是一個(gè)對(duì)象,不同類型的數(shù)組具有不同的類
B數(shù)組長(zhǎng)度是可以動(dòng)態(tài)調(diào)整的
C數(shù)組是一個(gè)連續(xù)的存儲(chǔ)結(jié)構(gòu)
D一個(gè)固定長(zhǎng)度的數(shù)組可類似這樣定義: int array[100]
E兩個(gè)數(shù)組用equals方法比較時(shí),會(huì)逐個(gè)便利其中的元素,對(duì)每個(gè)元素進(jìn)行比較
F可以二維數(shù)組,且可以有多維數(shù)組,都是在Java中合法的
題解:
數(shù)組的長(zhǎng)度是固定的,int[] array =new int[100]就對(duì)了
10、下列流當(dāng)中,屬于處理流的是:()
正確答案: C D
FilelnputStream
lnputStream
DatalnputStream
BufferedlnputStream
題解:
按照流是否直接與特定的地方(如磁盤、內(nèi)存、設(shè)備等)相連,分為節(jié)點(diǎn)流和處理流兩類。
節(jié)點(diǎn)流:可以從或向一個(gè)特定的地方(節(jié)點(diǎn))讀寫(xiě)數(shù)據(jù)。
如FileReader.處理流:是對(duì)一個(gè)已存在的流的連接和封裝,通過(guò)所封裝的流的功能調(diào)用實(shí)現(xiàn)數(shù)據(jù)讀寫(xiě)。
如BufferedReader.處理流的構(gòu)造方法總是要帶一個(gè)其他的流對(duì)象做參數(shù)。一個(gè)流對(duì)象經(jīng)過(guò)其他流的多次包裝,稱為流的鏈接。
JAVA常用的節(jié)點(diǎn)流:
文 件 FileInputStream FileOutputStrean FileReader FileWriter 文件進(jìn)行處理的節(jié)點(diǎn)流。
字符串 StringReader StringWriter 對(duì)字符串進(jìn)行處理的節(jié)點(diǎn)流。
數(shù) 組 ByteArrayInputStream ByteArrayOutputStreamCharArrayReader CharArrayWriter 對(duì)數(shù)組進(jìn)行處理的節(jié)點(diǎn)流(對(duì)應(yīng)的不再是文件,而是內(nèi)存中的一個(gè)數(shù)組)。
管 道 PipedInputStream PipedOutputStream PipedReaderPipedWriter對(duì)管道進(jìn)行處理的節(jié)點(diǎn)流。
常用處理流(關(guān)閉處理流使用關(guān)閉里面的節(jié)點(diǎn)流)
緩沖流:BufferedInputStrean BufferedOutputStream BufferedReader BufferedWriter 增加緩沖功能,避免頻繁讀寫(xiě)硬盤。
轉(zhuǎn)換流:InputStreamReader OutputStreamReader 實(shí)現(xiàn)字節(jié)流和字符流之間的轉(zhuǎn)換。
數(shù)據(jù)流 DataInputStream DataOutputStream 等-提供將基礎(chǔ)數(shù)據(jù)類型寫(xiě)入到文件中,或者讀取出來(lái).
流的關(guān)閉順序
1.一般情況下是:先打開(kāi)的后關(guān)閉,后打開(kāi)的先關(guān)閉
2.另一種情況:看依賴關(guān)系,如果流a依賴流b,應(yīng)該先關(guān)閉流a,再關(guān)閉流b。例如,處理流a依賴節(jié)點(diǎn)流b,應(yīng)該先關(guān)閉處理流a,再關(guān)閉節(jié)點(diǎn)流b
3.可以只關(guān)閉處理流,不用關(guān)閉節(jié)點(diǎn)流。處理流關(guān)閉的時(shí)候,會(huì)調(diào)用其處理的節(jié)點(diǎn)流的關(guān)閉方法。
答案匯總:
1、正確答案: B
2、正確答案: D
3、正確答案: A
4、正確答案: A
5、正確答案: A
6、正確答案: A
7、正確答案: C
8、正確答案: B
9、正確答案: A C F
10、正確答案: C D
總結(jié)
本篇文章就到這里了,希望能給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
java將XML文檔轉(zhuǎn)換成json格式數(shù)據(jù)的示例
本篇文章主要介紹了java將XML文檔轉(zhuǎn)換成json格式數(shù)據(jù)的示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-12-12Java 如何繞過(guò)迭代器遍歷時(shí)的數(shù)據(jù)修改異常
這篇文章主要介紹了Java 繞過(guò)迭代器遍歷時(shí)的數(shù)據(jù)修改異常的方法,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下2021-02-02