1. 程式人生 > >錯題整理10.12

錯題整理10.12

1.

mark一下:jdk8之後,介面可以定義 static方法 與 default方法。 static方法只能通過介面呼叫,不能通過實現類呼叫。default只能通過介面實現類呼叫,不能通過介面名呼叫。

介面的方法都是 public abstract 變數都是public static final的 

 

2.

init方法: 是在servlet例項建立時呼叫的方法,用於建立或開啟任何與servlet相的資源和初始 化servlet的狀態,Servlet規範保證呼叫init方法前不會處理任何請求 

 service方法:是servlet真正處理客戶端傳過來的請求的方法,由web容器呼叫, 根據HTTP請求方法(GET、POST等),將請求分發到doGet、doPost等方法 

destory方法:是在servlet例項被銷燬時由web容器呼叫。Servlet規範確保在destroy方法呼叫之 前所有請求的處理均完成,需要覆蓋destroy方法的情況:釋放任何在init方法中 開啟的與servlet相關的資源儲存servlet的狀態

 

3.

迭代HashMap採用快速失敗機制,而Hashtable不是

 快速失敗(Fail-Fast)機制:對於執行緒不安全的集合物件的迭代器,如果在使用迭代器的過程中有其他執行緒修改了集合物件結構或者元素數量,那麼將丟擲ConcurrentModificationException,這就是所謂fail-fast策略。

    迭代 HashMap 採用快速失敗機制,而 HashTable 不是,因為 HashTable 是執行緒安全的。

 

4.

float aFun(float  a,  float  b){ }
public int aFun(int a, int b) { }
public float aFun(float  p,  float q){ }
private int aFun(int a,  int  b){ }

 

A.方法重寫(覆蓋)。子類方法不能縮小父類方法的訪問許可權,錯誤。

B.方法過載。引數列表不同,滿足過載條件,正確。

C.方法重寫(覆蓋)。方法宣告和父類相同,滿足重寫條件,正確。

D.方法過載。引數列表不同,滿足過載條件,正確。

java繼承中對建構函式是不繼承的,只是顯式或者隱式呼叫,

 

方法重寫應遵循“三同一小一大”原則:

  1. “三同”:即方法名相同,形參列表相同,返回值型別相同;
  2. “一小”:子類方法宣告丟擲的異常比父類方法宣告丟擲的異常更小或者相等;
  3. “一大”:子類方法的訪問修飾符應比父類方法更大或相等。

 

5.

A.new語句建立物件
B.呼叫Java.io.ObjectInputStream的readObject方法
C.java反射機制使用java.lang.Class或java.lang.reflect.Constructor的newInstance()方法
D.呼叫物件的clone()方法

readObject方法只是從檔案中還原物件,clone只是一種複製拷貝物件。

建構函式的作用是完成物件的初始化。當程式執行到new操作符時, 首先去看new操作符後面的型別,因為知道了型別,才能知道要分配多大的記憶體空間。分配完記憶體之後,再呼叫建構函式,填充物件的各個域,這一步叫做物件的初始化。而選項B、D中,物件的初始化並不是通過建構函式完成的,而是讀取別的記憶體區域中的物件的各個域來完成。

 

final修飾的類不能被被繼承。

final修飾的屬性不能修改。

final修飾的的方法 一:不能被子類重寫;二:編譯器在遇到final修飾的方法時會使用內嵌機制,大大提高效率。

final修飾的引數,只能讀取,不能修改。

 

A:抽象方法只可以被public 和 protected修飾;
B:final可以修飾類、方法、變數,分別表示:該類不可繼承、該方法不能重寫、該變數是常量
C:static final 可以表達在一起來修飾方法,表示是該方法是靜態的不可重寫的方法
D:private 修飾方法(這太常見的)表示私有方法,本類可以訪問,外界不能訪問

 

6.