1. 程式人生 > >牛客網第九天

牛客網第九天

1.以下二維陣列宣告合法的是( )
A.char[2][3] ch = new char[][]
B.char[2][] ch = new char[][3]
C.char[][] ch = new char[2][3]
D.char[][] ch = new [2]char[3]
正確答案: C 你的答案: C (正確)
解析:和定義一維陣列一樣
一維陣列的定義方法:int [] arr=new int [];
第一個括號不能寫內容 ,第二個括號可以寫也可以不寫。
2.在異常處理中,以下描述不正確的有
A.try塊不可以省略
B.可以使用多重catch塊
C.finally塊可以省略
D.catch塊和finally塊可以同時省略
正確答案: D 你的答案: D (正確)
解析:假如try中有異常丟擲,則會去執行catch塊,再去執行finally塊;假如沒有catch 塊,可以直接執行finally 塊,方法就以丟擲異常的方式結束,而finally 後的內容也不會被執行,所以catch 和 finally 不能同時省略。
try塊是捕捉異常用的,用來做防護的,如果有異常發生將會在catch中捕獲並加以處理,finally中是用來做最後的回收情況的必然會執行,而catch塊不一定執行,catch有可能會有多個因為這樣處理不同異常情況。
3.裝箱、拆箱操作發生在: ()
A.類與物件之間
B.物件與物件之間
C.引用型別與值型別之間
D.引用型別與引用型別之間
正確答案: C 你的答案: B (錯誤)
解析:通俗的講,就是基本資料型別和包裝類之間的轉換。如: int 型別和 Integer 類的轉換
基本資料型別轉化成包裝類是裝箱 (如: int --> Integer)。
包裝類轉化成基本資料型別就是拆箱 (如:Integer --> int)。
包裝類就是引用型別,基本資料型別就是值型別。所以選C
4.下面哪個識別符號是合法的?
A.9HelloWorld"
B."_Hello World"
C."HelloWorld"
D.“Hello$World”
正確答案: D 你的答案: D (正確)
解析:A以字母開頭錯誤,B中間有空格錯誤,C中間有

錯誤。所以選D。
5.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();
}

}
A.Never.
B.Each time a new object of type StaticTest is created.
C.Once when the class is loaded into the Java virtual machine.
D.Only when the main() method is executed.
正確答案: C 你的答案: B (錯誤)
解析:靜態程式碼塊優先於主方法,且只執行一次

被static修飾的語句或者變數有如下特點:
1.隨著類的載入而載入
2.優先於物件存在
3.被所有物件所共享
4.可以直接被類名所呼叫
使用注意:
1.靜態方法只能訪問靜態成員
2.靜態方法中不可以寫this,super關鍵字
3.主函式是靜態的
6.指出以下程式執行的結果是
public class Example{
String str=new String(“good”);
char[]ch={‘a’,‘b’,‘c’};
public static void main(String args[]){
Example ex=new Example();
ex.change(ex.str,

ex.ch);
System.out.print(ex.str+" and ");
System.out.print(ex.ch);
}
public void change(String str,char ch[]){
//引用型別變數,傳遞的是地址,屬於引用傳遞。
str=“test ok”;
ch[0]=‘g’;
}
}
A.good and abc
B.good and gbc
C.tst ok and abc
D.tst ok and gbc
正確答案: B 你的答案: D (錯誤)
解析:由於String不可變,故當執行change方法時候,str的地址會指向“test ok”,但是當執行完以後,依舊會輸出原來地址指向的“good”,而char型別是可變的 故選擇B
7.JSP分頁程式碼中,哪個步驟次序是正確的?
A.先取總記錄數,得到總頁數,最後顯示本頁的資料。
B.先取所有的記錄,得到總頁數,再取總記錄數,最後顯示本頁的資料。
C.先取總頁數,得到總記錄數,再取所有的記錄,最後顯示本頁的資料。
D.先取本頁的資料,得到總頁數,再取總記錄數,最後顯示所有的記錄。
正確答案: A 你的答案: B (錯誤)
解析:記住即可。
8.關於sleep()和wait(),以下描述錯誤的一項是( )
A.sleep是執行緒類(Thread)的方法,wait是Object類的方法;
B.sleep不釋放物件鎖,wait放棄物件鎖
C.sleep暫停執行緒、但監控狀態仍然保持,結束後會自動恢復
D.wait後進入等待鎖定池,只有針對此物件發出notify方法後獲得物件鎖進入執行狀態
正確答案: D 你的答案: D (正確)
解析:D選項,notity()和notifyAll()兩個方法均可,應該進入就緒狀態而不是執行狀態。
ava中的多執行緒是一種搶佔式的機制,而不是分時機制。搶佔式的機制是有多個執行緒處於可執行狀態,但是隻有一個執行緒在執行。
共同點 :

  1. 他們都是在多執行緒的環境下,都可以在程式的呼叫處阻塞指定的毫秒數,並返回。
  2. wait()和sleep()都可以通過interrupt()方法 打斷執行緒的暫停狀態 ,從而使執行緒立刻丟擲InterruptedException。
    如果執行緒A希望立即結束執行緒B,則可以對執行緒B對應的Thread例項呼叫interrupt方法。如果此刻執行緒B正在wait/sleep/join,則執行緒B會立刻丟擲InterruptedException,在catch() {} 中直接return即可安全地結束執行緒。
    需要注意的是,InterruptedException是執行緒自己從內部丟擲的,並不是interrupt()方法丟擲的。對某一執行緒呼叫 interrupt()時,如果該執行緒正在執行普通的程式碼,那麼該執行緒根本就不會丟擲InterruptedException。但是,一旦該執行緒進入到 wait()/sleep()/join()後,就會立刻丟擲InterruptedException 。
    不同點 :
    1.每個物件都有一個鎖來控制同步訪問。Synchronized關鍵字可以和物件的鎖互動,來實現執行緒的同步。
    sleep方法沒有釋放鎖,而wait方法釋放了鎖,使得其他執行緒可以使用同步控制塊或者方法。
    2.wait,notify和notifyAll只能在同步控制方法或者同步控制塊裡面使用,而sleep可以在任何地方使用
    3.sleep必須捕獲異常,而wait,notify和notifyAll不需要捕獲異常
    4.sleep是執行緒類(Thread)的方法,導致此執行緒暫停執行指定時間,給執行機會給其他執行緒,但是監控狀態依然保持,到時後會自動恢復。呼叫sleep不會釋放物件鎖。
    5.wait是Object類的方法,對此物件呼叫wait方法導致本執行緒放棄物件鎖,進入等待此物件的等待鎖定池,只有針對此物件發出notify方法(或notifyAll)後本執行緒才進入物件鎖定池準備獲得物件鎖進入執行狀態。
    9.在java中,下列對繼承的說法,正確的是( )
    A.子類能繼承父類的所有成員
    B.子類繼承父類的非私有方法和狀態
    C.子類只能繼承父類的public方法和狀態
    D.子類只能繼承父類的方法
    正確答案: A 你的答案: B (錯誤)
    解析:記住即可。
    10.有關執行緒的敘述正確的是()
    A.可以獲得對任何物件的互斥鎖定
    B.通過繼承Thread類或實現Runnable介面,可以獲得對類中方法的互斥鎖定
    C.執行緒通過使用synchronized關鍵字可獲得物件的互斥鎖定
    D.執行緒排程演算法是平臺獨立的
    正確答案: C D 你的答案: B C (錯誤)
    解析:解析裡面沒有水平 學了以後再說吧