1. 程式人生 > >Java筆試題(二)

Java筆試題(二)

1.以下java程式程式碼,執行後的結果是()

java.util.HashMap map=new java.util.HashMap(); 
map.put("name",null);      
map.put("name","Jack");
System.out.println(map.size());

答案:1

解析:

1.HashMap 可以插入 null 的 key 或 value。

2.插入的時候,檢查是否已經存在相同的 key,如果不存在,則直接插入,如果存在,則用新的 value 替換舊的 value。

3.在本題中,第一條 put 語句,會將 key / value 對插入 HashMap,而第二條 put,因為已經存在一個 key 為 name 的項,所以會用新的 value 替換舊的 vaue,因此,兩條 put 之後,HashMap 中只有一個 key / value 鍵值對。那就是(name,jack)。所以,size為 1。

 

2.下面程式的執行結果是()

String str1 = "hello";
String str2 = "he" + new String("llo");
System.err.println(str1 == str2);

答案:false

解析:

str1 指向的常量分配在字串常量池中

“he” 在編譯期分配在字串常量池中,new String("llo") 指向的常量 “llo” 也分配在字串常量池中。

雖然 str2 也是經過初始化,但是無法判斷 new String("llo") 到底是什麼,進而不會將 = 號右側的內容存於常量池,而是在通過構造時在堆區中的常量池外

的記憶體中宣告,至此 str2 與 str1 不止是分配記憶體的時期不同(一個在編譯期,一個在執行期)而且在記憶體空間的區域也不同。

 

3.以下程式碼執行後輸出結果為( )

public class ClassTest{
     String str = new String("hello");
     char[] ch = {'a','b','c'};
     public void fun(String str, char ch[]){
     str="world";
     ch[0]='d';
 }
 public static void main(String[] args) {
     ClassTest test1 = new ClassTest();
     test1.fun(test1.str,test1.ch);
     System.out.print(test1.str + " and ");
     System.out.print(test1.ch);
     }
 }

答案:hello and dbc

解析:

1.Java 中都是按棧中的值傳遞,基本資料型別棧中的值就是實際儲存的值,引用型別棧中的值就是指向堆中的地址。

2.String 和 char[ ] 都是引用型別,所以在方法中傳遞的都是指向真實資料的地址。

3.String 在原始碼中的是這麼寫的:public final class String,final 型別不可改變。fun() 方法是開闢一塊新的記憶體,將 world 放入記憶體,然後把新的地址給 fun() 方法中的 str(形參)。也就是說,fun() 方法中根本沒有改變初始存放 “hello” 的記憶體(地址)值,當這個方法返回時,main 方法中的 str 依然是那個沒修改前的引用,當然還是輸出 “hello” 了。

 

4.Java 的跨平臺特性是指編譯後的檔案位元組碼檔案,即 class 檔案)跨平臺,而不是源程式跨平臺。該 class 檔案與平臺無關,而 class 檔案經過解釋執行之後翻譯成最終的機器碼,這是平臺相關的。

 

5.JSP分頁程式碼中,正確的步驟次序

1.count(*) 得到總記錄數

2.計算總頁數

3.過濾顯示本頁資料

 

6.Servlet的生命週期一般可以用三個方法來表示:

1.init():僅執行一次,負責在裝載 Servlet 時初始化 Servlet 物件

2.service():核心方法,一般 HttpServlet 中會有 get,post 兩種處理方式。在呼叫 doGet 和 doPost 方法時會構造 servletRequest 和servletResponse 請求和響應物件作為引數。

3.destory():在停止並且解除安裝 Servlet 時執行,負責釋放資源

初始化階段:Servlet 啟動,會讀取配置檔案中的資訊,構造指定的 Servlet 物件,建立 ServletConfig 物件,將 ServletConfig 作為引數來呼叫 init() 方法。