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

1、Java 語言中創建一個對象使用的關鍵字是()

正確答案: C

class

interface

new

create

題解:
送分題,程序員沒有對象就new一個

2、創建一個標識有“關閉”標簽的語句是 ( ) 。

正確答案: B

TextField b = new TextField(“關閉”);

Label b = new Label(“關閉”);

Checkbox b = new Checkbox(“關閉”);

Button b = new Button(“關閉”);

題解:
選項A錯誤,創建的是一個初始顯示為“關閉”的文本框
選項B正確,創建的是一個標識有“關閉”的標簽
選項C錯誤,Checkbox為復選框類,隻能設定是否含標簽
選項D錯誤,創建的是一個標記為“關閉”的按鈕

3、When is the text “Hi there”displayed?

public class StaticTest
{
    static
    {
        System.out.println(“Hi there”);
    }
 
    public void print()
    {
        System.out.println(“Hello”);
    }
 
    public static void main(String args[])
    {
        StaticTest st1 = new StaticTest();
        st1.print();
        StaticTest st2 = new StaticTest();
        st2.print();
    }
}

正確答案: C

Never.

Each time a new object of type StaticTest is created.

Once when the class is loaded into the Java virtual machine.

Only when the main() method is executed.

翻譯:

“Hi there”是什麼時候顯示的?

從來沒有。

每次創建StaticTest類型的新對象時。

當類加載到Java虛擬機時。

僅當main()方法被執行時

題解:
類中靜態語句塊僅在類加載時被執行一次

4、下列哪個說法是正確的()

正確答案: D

ConcurrentHashMap使用synchronized關鍵字保證線程安全

HashMap實現瞭Collction接口

Array.asList方法返回java.util.ArrayList對象

SimpleDateFormat是線程不安全的

題解:
A. JDK1.8 的 ConcurrentHashMap 采用CAS+Synchronized保證線程安全。數據結構跟 jdk1.8 中 HashMap 結構類似,都是數組 + 鏈表(當鏈表長度大於 8 時,鏈表結構轉為紅黑二叉樹)結構。 JDK1.7 及以前采用segment的分段鎖機制實現線程安全,其中segment繼承自ReentrantLock,因此采用Lock鎖來保證線程安全。
B. 


C.Arrays.asList() 返回 java.util.Arrays.ArrayList 對象,這裡的 ArrayList 是 Arrays 私有的內部類
D.

5、給出以下代碼,請給出結果.

class Two{
    Byte x;
}
class PassO{
    public static void main(String[] args){
        PassO p=new PassO();
        p.start();
    }
    void start(){
        Two t=new Two();
        System.out.print(t.x+””);
        Two t2=fix(t);
        System.out.print(t.x+” ” +t2.x);
    }
    Two fix(Two tt){
        tt.x=42;
        return tt;
    }
}

正確答案: B

null null 42

null 42 42

0 0 42

0 42 42

An exception is thrown at runtime

Compilation

題解:
1.註意第二行代碼,Byte x;Byte是包裝類,不是byte(基本數據類型),因此Byte的默認是null,不是0
2.t是一個引用地址類型,在調用fit(Two tt)函數是,是一個實參到形參的傳值,也就是把t的地址賦值給瞭tt,但是都是指向堆內存中新建的對象,因此當對tt.x和t.x指向是相同的。因此t.x也是42
3.Two t2=fit(t);fit函數返回的還是一個引用地址,這句代碼相當於把t(函數裡面返回的是tt)的地址賦值給瞭t2,因此t2.x也是42
在這裡插入圖片描述

6、給定以下JAVA代碼,這段代碼運行後輸出的結果是()

public class Test
{  
    public static int aMethod(int i)throws Exception
    {
        try{
            return i/10;
        }
        catch (Exception ex)
        {
            throw new Exception("exception in a aMethod");
        }finally{
      System.out.printf("finally");
        }
} 
    public static void main(String[] args){
        try
        {
            aMethod(0);
        }
        catch (Exception ex)
        {
            System.out.printf("exception in main");
        }
        System.out.printf("finished");
    }
}

正確答案: B

exception in main finished

finally finished

exception in main finally

finally exception in main finally

題解:
具體執行過程:
1、先進入main函數,進入try塊調用aMethod(0)方法;
2、執行aMethod()方法的try塊,i/10可以正確執行,故並未拋出異常,catch塊不執行,而需要執行finally(該塊任何時候都要執行),故打印finally;
3、回到main函數,由於aMethod()調用成功,因此main函數的catch塊同樣不執行,順序執行finally塊,打印finished
因此,最終的輸出結果就是:finally finished

7、面有關Java的說法正確的是( )

正確答案: A C D F

A:一個類可以實現多個接口

B:抽象類必須有抽象方法

C:protected成員在子類可見性可以修改

D:通過super可以調用父類構造函數

E:final的成員方法實現中隻能讀取類的成員變量

F:String是不可修改的,且java運行環境中對string對象有一個對象池保存

題解:
A對:java類單繼承,多實現
B錯:被abstract修飾的類就是抽象類,有沒有抽象方法無所謂
C錯:描述有問題。protected成員在子類的可見性,我最初理解是子類(不繼承父類protected成員方法)獲取父類被protected修飾的成員屬性或方法,可見性是不可能變的,因為修飾符protected就是描述可見性的。
這道題應該是要考察子類繼承父類,並重寫父類的protected成員方法,該方法的可見性可以修改,這是對的,因為子類繼承父類的方法,訪問權限可以相同或往大瞭改
D對。
E錯:final修飾的方法隻是不能重寫,static修飾的方法隻能訪問類的成員變量
F對。

8、下列哪些情況下會導致線程中斷或停止運行( )

正確答案: A B

InterruptedException異常被捕獲

線程調用瞭wait方法

當前線程創建瞭一個新的線程

高優先級線程進入就緒狀態

題解:
A選項正確,Java中一般通過interrupt方法中斷線程
B選項正確,線程使用瞭wait方法,會強行打斷當前操作,進入阻塞(暫停)狀態,然後需要notify方法或notifyAll方法才能進入就緒狀態
C選項錯誤,新創建的線程不會搶占時間片,隻有等當前線程把時間片用完,其他線程才有資格拿到時間片去執行。
D選項錯誤,調度算法未必是剝奪式的,而準備就緒但是還沒有獲得CPU,它的權限更高隻能說明它獲得CPU被執行的幾率更大而已

9、JAVA反射機制主要提供瞭以下哪些功能?

正確答案: A B C D

在運行時判斷一個對象所屬的類

在運行時構造一個類的對象

在運行時判斷一個類所具有的成員變量和方法

在運行時調用一個對象的方法

題解:
JAVA反射機制概念:
JAVA反射機制是在運行狀態中,對於任意一個類,都能夠知道這個類的所有屬性和方法;對於任意一個對象,都能夠調用它的任意一個方法和屬性;這種動態獲取的信息以及動態調用對象的方法的功能稱為java語言的反射機制。
Java反射機制主要提供瞭以下功能:
1、在運行時判定任意一個對象所屬的類;
2、在運行時構造任意一個類的對象;
3、在運行時判定任意一個類所具有的成員變量和方法;
4、在運行時調用任意一個對象的方法;
5、生成動態代理。

10、CMS垃圾回收器在那些階段是沒用用戶線程參與的

正確答案: A C

初始標記

並發標記

重新標記

並發清理

題解:
用戶線程(user-level threads)指不需要內核支持而在用戶程序中實現的線程,其不依賴於操作系統核心,應用進程利用線程庫提供創建、同步、調度和管理線程的函數來控制用戶線程。
CMS的GC過程有6個階段(4個並發,2個暫停其它應用程序)
1.初次標記(STW initial mark)
2.並發標記(Concurrent marking)
3.並發可中斷預清理(Concurrent precleaning)
4.最終重新標記(STW remark)
5.並發清理(Concurrent sweeping)
6.並發重置(Concurrent reset)
在初次標記,重新標志的時候,要求我們暫停其它應用程序,那麼這兩個階段用戶線程是不會參與的

答案匯總:

1、正確答案: C

2、正確答案: B

3、正確答案: C

4、正確答案: D

5、正確答案: B

6、正確答案: B

7、正確答案: A C D F

8、正確答案: A B

9、正確答案: A B C D

10、正確答案: A C

總結

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

推薦閱讀: