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

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

1、以下程序段的輸出結果為:

public class EqualsMethod

{

public static void main(String[] args)

{

Integer n1 = new Integer(47);

Integer n2 = new Integer(47);

System.out.print(n1 == n2);

System.out.print(“,”);

System.out.println(n1 != n2);

}

}

正確答案: B

false,false

false,true

true,false

true,true

題解:
首先 我們要知道 == 這個比較符號
==可用於基本類型和引用類型:當用於基本類型時候,是比較值是否相同;當用於引用類型的時候,是比較對象是否相同。
“==”和 “!=”比較的是地址 指第一個new()出來的地址
因為兩次new() 出的內存也不同
所以System.out.print(n1 == n2);返回 false
所以System.out.println(n1 != n2);就返回true
所以選B

2、在java7中,下列不能做switch()的參數類型是?

正確答案: D

int型

枚舉類型

字符串

浮點型

題解:
switch語句後的控制表達式隻能是short、char、int整數類型和枚舉類型,不能是float,double和boolean類型。String類型是java7開始支持。

3、以下代碼的輸出結果是?

public class B

{

public static B t1 = new B();

public static B t2 = new B();

{

System.out.println(“構造塊”);

}

static

{

System.out.println(“靜態塊”);

}

public static void main(String[] args)

{

B t = new B();

}

}

正確答案: C

靜態塊 構造塊 構造塊 構造塊

構造塊 靜態塊 構造塊 構造塊

構造塊 構造塊 靜態塊 構造塊

構造塊 構造塊 構造塊 靜態塊

題解:
開始時JVM加載B.class,對所有的靜態成員進行聲明,t1 t2被初始化為默認值,為null,又因為t1 t2需要被顯式初始化,所以對t1進行顯式初始化,初始化代碼塊→構造函數(沒有就是調用默認的構造函數),咦!靜態代碼塊咋不初始化?因為在開始時已經對static部分進行瞭初始化,雖然隻對static變量進行瞭初始化,但在初始化t1時也不會再執行static塊瞭,因為JVM認為這是第二次加載類B瞭,所以static會在t1初始化時被忽略掉,所以直接初始化非static部分,也就是構造塊部分(輸出’‘構造塊”)接著構造函數(無輸出)。接著對t2進行初始化過程同t1相同(輸出’構造塊’),此時就對所有的static變量都完成瞭初始化,接著就執行static塊部分(輸出’靜態塊’),接著執行,main方法,同樣也,new瞭對象,調用構造函數輸出(‘構造塊’),所以選C

4、What results from the following code fragment?

(翻譯:下面的代碼片段產生瞭什麼結果?)

int i = 5;

int j = 10;

System.out.println(i + ~j);

正確答案: C

Compilation error because”~”doesn’t operate on integers

-5

-6

15

題解:
公式-n=n+1可推出n=-n-1,所以~10=-11再加5結果為-6

5、對於構造方法,下列敘述正確的是( )。

正確答案: A C D

構造方法的優先級一般比代碼塊低。

構造方法的返回類型隻能是void型。

構造方法的主要作用是完成對類的對象的初始化工作。

一般在創建新對象時,系統會自動調用構造方法。

題解:

A:靜態成員變量或靜態代碼塊>main方法>非靜態成員變量或非靜態代碼塊>構造方法

B:think in java中提到構造器本身並沒有任何返回值。

C: 構造方法的主要作用是完成對類的對象的初始化工作。

D: 一般在創建(new)新對象時,系統會自動調用構造方法。

6、JDK1.7版本之前,接口和抽象類描述正確的有( )

正確答案: B C

抽象類沒有構造函數。

接口沒有構造函數。

抽象類不允許多繼承。

接口中的方法可以有方法體。

題解:
A.抽象類可以有構造方法,隻是不能直接創建抽象類的實例對象而已
B.在接口中 不可以有構造方法,在接口裡寫入構造方法時,編譯器提示:Interfaces cannot have constructors。
C.Java不允許類多重繼承
D.jdk1.8後接口中的方法可以有方法體,jdk1.8之前不可以有方法體

7、以下關於JAVA語言異常處理描述正確的有?

正確答案: C D

throw關鍵字可以在方法上聲明該方法要拋出的異常。

throws用於拋出異常對象。

try是用於檢測被包住的語句塊是否出現異常,如果有異常,則拋出異常,並執行catch語句。

finally語句塊是不管有沒有出現異常都要執行的內容。

在try塊中不可以拋出異常

題解:
Java語言中的異常處理包括聲明異常、拋出異常、捕獲異常和處理異常四個環節。
throw用於拋出異常。
throws關鍵字可以在方法上聲明該方法要拋出的異常,然後在方法內部通過throw拋出異常對象。
try是用於檢測被包住的語句塊是否出現異常,如果有異常,則拋出異常,並執行catch語句。
cacth用於捕獲從try中拋出的異常並作出處理。
finally語句塊是不管有沒有出現異常都要執行的內容。

8、下面程序輸出結果為():

public class Demo{

public static void main (String [] args) {

String lx = “LeXin”;

String nb = lx;

lx = “Fenqile”;

System.out.println(nb);

}

}

正確答案: B C

程序異常,編譯不通過

程序編寫正常,可正常運行

程序輸出值為“LeXin”

程序輸出值為“Fenqile”

題解:
很顯然是把“LeXin”的值賦給瞭nb

9、java中關於繼承的描述正確的是()

正確答案: A C D

一個子類隻能繼承一個父類

子類可以繼承父類的構造方法

繼承具有傳遞性

父類一般具有通用性,子類更具體

題解:
子類不可以繼承父類的構造方法,隻可以調用父類的構造方法。子類中所有的構造函數都會默認訪問父類中的空參數構造函數,這是因為子類的構造函數內第一行都有默認的super()語句。

10、What is Static Method in Java()

正確答案: A B C

It is a method which belongs to the class and not to the object(instance)

A static method can access only static data. It can not access non-static data (instance variables)

A static method can call only other static methods and can not call a non-static method from it.

A static method can not be accessed directly by the class name and doesn’t need any object

題解:
A:靜態方法是一個屬於類而不屬於對象(實例)的方法。(√)
B:靜態方法隻能訪問靜態數據。無法訪問非靜態數據(實例變量)。(√)
C:靜態方法隻能調用其他靜態方法,不能從中調用非靜態方法。(√)
D:靜態方法不能通過類名直接訪問,也不需要任何對象。(×) 靜態方法可以直接用類名訪問。

答案匯總:

1、正確答案: B

2、正確答案: D

3、正確答案: C

4、正確答案: C

5、正確答案: A C D

6、正確答案: B C

7、正確答案: C D

8、正確答案: B C

9、正確答案: A C D

10、正確答案:A B C

總結

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

推薦閱讀: