Java日常練習題,每天進步一點點(61)

承蒙各位厚愛,我們一起每天進步一點點!(鼠標選中空白處查看答案)

1、如果類的方法沒有返回值,該方法的返回值類型應當是abstract。()

正確答案:B

A 正確

B 錯誤

題解:
1、 沒有返回值就是不返回任何東西 abstract肯定是錯的瞭 void返回值為空 所以說的是構造函數吧
2、 選B,沒有返回值,該方法的返回值類型為void

2、代碼String str=”123456a”;int i=Integer.parseInt(str);會報異常的是()

正確答案:B

A java.lang.NullPoninterException

B java.lang.NumberFormatException

C java.lang.RuntimeException

D java.lang.ArrayindexOutOfBoundsException

題解:
1、非純數字的字符串轉化為Integer對象會報數字格式異常。
2、 java.lang.NullPoninterException:變量未被初始化、對象未賦值、對象為空(俗稱的空指針異常) java.lang.NumberFormatException:數據格式轉換失敗(integer的取值范圍為:-127-128,超過范圍都會訪問false) java.lang.RuntimeException:運行時異常 java.lang.ArrayindexOutOfBoundsException:數組下標越界
3、 parseInt 是將字符串參數解析為帶符號的十進制整數。 字符串中的字符都必須是十進制數字,除瞭第一個字符可能是ASCII減號’-‘ ( ‘\u002D’ )以指示負值或ASCII加號’+’ ( ‘\u002B’ )以指示正值。 返回所得到的整數值,就像參數和小數10被賦予parseInt(java.lang.String
4、 int)方法的參數一樣。

3、以下哪個方法用於定義線程的執行體?

正確答案:C

A start()

B init()

C run()

D synchronized()

題解:
1、run()相當於線程的任務處理邏輯的入口方法,它由Java虛擬機在運行相應線程時直接調用,而不是由應用代碼進行調用。 而start()的作用是啟動相應的線程。啟動一個線程實際是請求Java虛擬機運行相應的線程,而這個線程何時能夠運行是由線程調度器決定的。start()調用結束並不表示相應線程已經開始運行,這個線程可能稍後運行,也可能永遠也不會運行。
2、 run方法線程執行體.start方法開啟多線程
3、 WCNBD!

4、在Java中,什麼是Garbage Collection?()

正確答案:C

A 自動刪除在程序中導入但未使用的任何包

B JVM檢查任何Java程序的輸出並刪除任何沒有意義的東西

C 當對象的所有引用都消失後,對象使用的內存將自動回收

D 操作系統定期刪除系統上可用的所有java文件

題解:
1、 garbage collection 垃圾回收

5、判斷對錯。List,Set,Map都繼承自繼承Collection接口。

正確答案:B

A 對

B 錯

題解:
Map是獨立的接口,不繼承Collection接口

6、關於下面程序,哪些描述是正確的: ( ) public class While {

public void loop() {

int x= 10;

while ( x ) {

System.out.print("x minus one is " + (x - 1));

x -= 1;

}

}

}

正確答案:B

A 行1有語法錯誤

B 行4有語法錯誤

C 行5有語法錯誤

D 行6有語法錯誤

E 行2有語法錯誤

Floop是關鍵字

G 程序能夠正常編譯和運行

題解:
1、這個題主要考while()中表達式的判斷,在C語言中大於0的int值都會被認為是true,而java中沒有這個機制,必須是boolean類型的。
2、 while()括號裡參數必須是佈爾類型,要麼true要麼false
3、 loop 不是java 的關鍵字 問題出在 wile( boolean ) x 是一個int 形的變量 不是Boolean 值 所有編譯不通過

7、若有下列定義,下列哪個表達式返回false? String s = “hello”; String t = “hello”; char c = {‘h’,‘e’,‘l’,‘l’,‘o’} ;

正確答案:B

A s.equals(t);

B t.equals©;

C s==t;

D t.equals(new String(“hello”));

題解:
1、 看瞭一堆解析,不懂別亂說ok. 看底層源碼 此處有判斷這個參數是不是String的實例,不是不執行判斷最後返回false,char數組是一種對象類型不是String類型的實例,直接跳過比較返回false
2、 選B。 A、D選項是對字符串內容的比較。JVM為瞭減少字符串對象的重復創建,其維護瞭一個特殊的內存,這段內存被成為字符串常量池。代碼中出現字面量形式創建字符串對象時,JVM首先會對這個字面量進行檢查,如果字符串常量池中存在相同內容的字符串對象的引用,則將這個引用返回,否則新的字符串對象被創建,然後將這個引用放入字符串常量池,並返回該引用。所以返回true。 C選項是引用地址的比較,同上也屬於常量池的同一個字符串地址,所以相等返回true。

8、關於Java中參數傳遞的說法,哪個是錯誤的?

正確答案:D

A 在方法中,修改一個基礎類型的參數不會影響原始參數值

B 在方法中,改變一個對象參數的引用不會影響到原始引用

C 在方法中,修改一個對象的屬性會影響原始對象參數

D 在方法中,修改集合和Maps的元素不會影響原始集合參數

題解:
答案: D
解析: 註意!Java中方法的參數傳遞都是值傳遞
A. 在方法中,修改一個基礎類型的參數不會影響原始參數值
public static void main(String []args){
int i = 5;
func(i);
System.out.println(i);
}
static void func(int j){
j = 10;
}
//輸出結果
5
在主方法調用func(int j) 時 , 參數i是實際參數 , 值為5 , 參數j是形式參數 , 值是i給的 , 也是5 , i和j沒有任何關系 , 是兩個獨立的參數 , 所以修改j的值時與i沒有關系 , 仍然輸出5。
B. 在方法中,改變一個對象參數的引用不會影響到原始引用
public static void main(String []args){
User rabbiter = new User();
rabbiter.setName(“rabbiter”);
func(rabbiter);
System.out.println(rabbiter.getName());
}
static void func(User user){
user = new User();
user.setName(“zhangsan”);
}
//輸出結果
rabbiter
在主方法調用func(User user) 時 , 對象rabbiter保存的是一個地址值 , 本質上就是把rabbiter的地址值給瞭形參user , 所以此時實參rabbiter和形參user指向在堆中的同一個對象 , 他們的地址值相同 , 隻是指向的對象一致 , 所以並不違反值傳遞的理論。
此時 , 如果修改形參user , new一個新的對象並讓user指向它 , 修改的隻是形參保存的地址 , 與實參rabbiter無關 , rabbiter指向的對象仍然是之前的那個對象。
C. 在方法中,修改一個對象的屬性會影響原始對象參數
public static void main(String []args){
User rabbiter = new User();
rabbiter.setName(“rabbiter”);
func(rabbiter);
System.out.println(rabbiter.getName());
}
static void func(User user){
user.setName(“zhangsan”);
}
//輸出結果
zhangsan
在主方法調用func(User user) 時 , 對象rabbiter保存的是一個地址值 , 本質上就是把rabbiter的地址值給瞭形參user , 所以此時實參rabbiter和形參user指向在堆中的同一個對象 , 他們的地址值相同 , 指向的對象一致 , 所以並不違反值傳遞的理論。
那麼user對其指向的對象的屬性name進行修改 , rabbiter指向的對象的name屬性也就被修改瞭。
D. 在方法中,修改集合和Maps的元素不會影響原始集合參數
集合和Maps都是對象 , 所以此項跟C選項的解析一致。

9、下面有關JAVA異常類的描述,說法錯誤的是?

正確答案:D

A 異常的繼承結構:基類為Throwable,Error和Exception繼承Throwable,RuntimeException和IOException等繼承Exception

B 非RuntimeException一般是外部錯誤(非Error),其一般被 try{}catch語句塊所捕獲

C Error類體系描述瞭Java運行系統中的內部錯誤以及資源耗盡的情形,Error不需要捕捉

D RuntimeException體系包括錯誤的類型轉換、數組越界訪問和試圖訪問空指針等等,必須被 try{}catch語句塊所捕獲

題解:
1、運行時異常故名思議就是程序在運行的時候出現異常,隱含的一個前提就是程序在編譯時是檢測不到異常的存在,作者本人也並不知道是否自己的代碼中含有運行時異常,所以根本也不可能提前使用try{}catch{}捕獲.
2、 異常是指程序運行時(非編譯)所發生的非正常情況或錯誤,當程序違反瞭語音規則,jvm就會將出現的錯誤表示一個異常拋出。 異常也是java 的對象,定義瞭基類 java。lang。throwable作為異常父類。 這些異常類又包括error和exception。兩大類 error類異常主要是運行時邏輯錯誤導致,一個正確程序中是不應該出現error的。當出現error一般jvm會終止。 exception表示可恢復異常,包括檢查異常和運行時異常。 檢查異常是最常見異常比如 io異常sql異常,都發生在編譯階段。這類通過try、catch捕捉 而運行時異常,編譯器沒有強制對其進行捕捉和處理。一般都會把異常向上拋出,直到遇到處理代碼位置,若沒有處理塊就會拋到最上層,多線程用thread。run()拋出,單線程用main()拋出。常見的運行異常包括 空指針異常 類型轉換異常 數組月結異常 數組存儲異常 緩沖區溢出異常 算術異常等

10、類之間存在以下幾種常見的關系:

正確答案:ABC

A “USES-A”關系

B “HAS-A”關系

C “IS-A”關系

D “INHERIT-A”關系

題解:
1、 USES-A:依賴關系,A類會用到B類,這種關系具有偶然性,臨時性。但B類的變化會影響A類。這種在代碼中的體現為:A類方法中的參數包含瞭B類。 關聯關系:A類會用到B類,這是一種強依賴關系,是長期的並非偶然。在代碼中的表現為:A類的成員變量中含有B類。 HAS-A:聚合關系,擁有關系,是關聯關系的一種特例,是整體和部分的關系。比如鳥群和鳥的關系是聚合關系,鳥群中每個部分都是鳥。 IS-A:表示繼承。父類與子類,這個就不解釋瞭。 要註意:還有一種關系:組合關系也是關聯關系的一種特例,它體現一種contains-a的關系,這種關系比聚合更強,也稱為強聚合。它同樣體現整體與部分的關系,但這種整體和部分是不可分割的。
2、 use-a 是依賴關系 has-a 一般是組合關系 is-a 一般是繼承關系

答案匯總:

1、正確答案:B

2、正確答案:B

3、正確答案:C

4、正確答案:C

5、正確答案:B

6、正確答案:B

7、正確答案:B

8、正確答案:D

9、正確答案:D

10、正確答案:ABC

總結

本篇文章就到這裡瞭,希望能給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!

推薦閱讀: