首頁 > 軟體

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

2021-07-22 13:01:08

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

1、下面的程式碼執行的結果是:

class B extends Object
{
    static
    {
        System.out.println("Load B");
    }
    public B()
    {
        System.out.println("Create B");
    }
}
class A extends B
{
    static
    {
        System.out.println("Load A");
    }
    public A()
    {
        System.out.println("Create A");
    }
}
public class Testclass
{
    public static void main(String[] args)
    {
        new A();
    }
}

正確答案: B

Load B ->Create B->Load A -> Create A

Load B -> Load A ->Create B ->Create A

Load B -> Create B-> Create A -> Load A

Create B ->Create A ->Load B ->Load A

題解:
初始化塊在構造器執行之前執行,類初始化階段先執行最頂層父類別的靜態初始化塊,依次向下執行,最後執行當前類的靜態初始化塊;建立物件時,先呼叫頂層父類別的構造方法,依次向下執行,最後呼叫本類的構造方法。
父類別靜態程式碼塊-》子類靜態程式碼塊-》父類別構造程式碼塊-》父類別建構函式-》子類構造程式碼塊-》子類建構函式
初始化過程:
1.初始化父類別中的靜態成員變數和靜態程式碼塊 ;
2.初始化子類中的靜態成員變數和靜態程式碼塊 ;
3.初始化父類別的普通成員變數和程式碼塊,再執行父類別的構造方法;
4.初始化子類的普通成員變數和程式碼塊,再執行子類的構造方法

2、下面有關java範例變數,區域性變數,類變數和final變數的說法,錯誤的是?

正確答案: B

範例變數指的是類中定義的變數,即成員變數,如果沒有初始化,會有預設值。

區域性變數指的是在方法中定義的變數,如果沒有初始化,會有預設值

類變數指的是用static修飾的屬性

final變數指的是用final 修飾的變數

題解:
區域性變數必須有初始值

3、執行如下程式碼段後,變數s1參照的字串值是( )。

String s1 = 「ABCD」;

String s2 = 「1234」;

System.out.println(s1 + s2);

正確答案: A

ABCD

1234

ABCD1234

1234ABCD

題解:
變數s1參照的字串值是
這題出的牛,有誰跟我一樣看見輸出就覺得選C
其實題問的就是s1,牛這題

4、類A1和類A2在同一包中,類A2有個protected的方法testA2,類A1不是類A2的子類(或子類的子類),類A1可以存取類A2的方法testA2。( )

正確答案: A

正確

錯誤

題解:
public:可以被所有其他類所存取
private:只能被自己存取和修改
protected:自身、子類及同一個包中類可以存取
default:同一包中的類可以存取,宣告時沒有加修飾符,認為是friendly。

5、在一個基於分散式的遊戲伺服器系統中,不同的伺服器之間,哪種通訊方式是不可行的()?

正確答案: A

管道

訊息佇列

快取記憶體資料庫

通訊端

題解:
管道( pipe ):管道是一種半雙工的通訊方式,資料只能單向流動,而且只能在具有親緣關係的程序間使用。程序的親緣關係通常是指父子程序關係。
既然是不同的伺服器之間進行通訊,怎麼可能會是具有親緣關係的程序呢?

6、下面有個hibernate延遲載入,說法錯誤的是?

正確答案: C

Hibernate2延遲載入實現:a)實體物件 b)集合(Collection)

Hibernate3 提供了屬性的延遲載入功能

get支援延遲載入,load不支援延遲加

hibernate使用Java反射機制,而不是位元組碼增強程式來實現透明性

題解:
get()採用立即載入方式,而load()採用延遲載入

7、下面關於Spring的說法中錯誤的是()

正確答案: D

Spring是一系列輕量級Java EE框架的集合

Spring中包含一個「依賴注入」模式的實現

使用Spring可以實現宣告式事務

Spring提供了AOP方式的紀錄檔系統

題解:
Spring並沒有為我們提供紀錄檔系統,我們需要使用AOP(面向方面程式設計)的方式,藉助Spring與紀錄檔系統log4j實現我們自己的紀錄檔系統。

8、servlet週期包含哪些:

正確答案: A B C

初始化

銷燬

請求處理

開始

題解:
Servlet生命週期分成3個階段:
1)初始化階段:呼叫init方法
2)響應客戶請求:呼叫service
3)終止:呼叫destory方法

初始化階段:在下列時刻servlet容器裝載servlet
1 servlet容器啟動時,自動裝載某些servlet
2 在servlet容器啟動後,客戶首次向servlet傳送請求
3 servlet類檔案被更新之後,重新裝載servlet

Servlet被裝載之後,servlet容器建立一個servlet'物件並呼叫servlet的init方法,在servlet生命週期內,init方法只能被呼叫一次。servlet工作原理:使用者端發起一個請求,servlet呼叫service方法時請求進行響應,service對請求的方式進行了匹配,選擇呼叫dopost或者doget等這些方法,然後進入對應方法中呼叫邏輯層的方法,實現對客戶的響應。

響應客戶請求:對於使用者到達servlet的請求,servlet容器會建立特定於該請求的servletrequest和servletresponse物件,然後呼叫servlet的service方法,service方法從servletrequest物件中獲取客戶請求的資訊,處理該請求,並且通過servletresponse物件向用戶端返回響應資訊。

終止:當web應用終止或者servlet容器終止或servlet容器重新裝載servlet新範例時,servlet容器會呼叫servlet物件的destory方法,在destory方法中可以釋放servlet佔用的資源

9、已知如下的命令執行 java MyTest a b c 請問哪個語句是正確的? ( )

正確答案: C D

args[0] = 「MyTest a b c」

args[0] = 「MyTest」

args[0] = 「a」

args[1]= "b"

題解:
題目這樣理解:java命令執行MyTest類下的main函數,命令列輸入java MyTest a b c,請問入參中對應的args為如下哪種?
main函數格式如下:public static void main(String[] args),入參中有一個String[] args,這是一個字串陣列,它早期是為了接收鍵盤錄入的資料的,而現在被Scanner(JDK 1.5以後才出現)所替代,通過String[] args錄入資料的格式是 java 類名(main方法所在類的類名) 字串1 字串2 字串3 …。對應本題,args[0]=a args[1]=b args[2]=c

10、關於java集合下列說法不正確的有哪些()

正確答案: A B D

HashSet 它是執行緒安全的,不允許儲存相同的物件

ConcurrentHashMap 它是執行緒安全的,其中儲存的鍵物件可以重複,值物件不能重複

Collection介面是List介面和Set介面的父介面,通常情況下不被直接使用

ArrayList執行緒安全的,允許存放重複物件

題解:
A: HashSet 它不是執行緒安全的,屬於Set介面下的實現類,Set下的實現類特徵就是無序,不允許儲存相同的物件
B: ConcurrentHashMap 它是執行緒安全的HashMap實現,特徵也相似,其中儲存的值物件可以重複,鍵物件不能重複
C: Collection介面是List介面和Set介面的父介面,通常情況下不被直接使用
D: ArrayList執行緒不安全的,底層是陣列實現,允許存放重複物件

答案彙總:

1、正確答案: B

2、正確答案: B

3、正確答案: A

4、正確答案: A

5、正確答案: A

6、正確答案: C

7、正確答案: D

8、正確答案: A B C

9、正確答案: C D

10、正確答案: A B D


IT145.com E-mail:sddin#qq.com