Java複習題
1、面向對象編程的特點。
-
封裝:數據和代碼捆綁在一起,避免外界干擾和不確定性訪問。封裝可以使得代碼模塊化。
-
繼承:讓某種類型對象獲得另一個類型對象的屬性和方法。繼承可以擴展已存在的代碼
-
多態:同一事物表現出不同事物的能力,即向不同對象發送同一消息,不同的對象在接收時會產生不同的行爲(重載實現編譯時多態,虛函數實現運行時多態)。多態的目的則是爲了接口重用
2、String和StringBuffer有什麼區別?
String不可擴展,不能修改字符串。
當對字符串進行修改的時候,需要使用 StringBuffer 和 StringBuilder 類。
和 String 類不同的是,StringBuffer 和 StringBuilder 類的對象能夠被多次的修改,並且不產生新的未使用對象。
StringBuilder 類在 Java 5 中被提出,它和 StringBuffer 之間的最大不同在於 StringBuilder 的方法不是線程安全的(不能同步訪問)。
由於 StringBuilder 相較於 StringBuffer 有速度優勢,所以多數情況下建議使用 StringBuilder 類。然而在應用程序要求線程安全的情況下,則必須使用 StringBuffer 類。
3、Integer和int有什麼區別?
- int是基本數據類型;
- Integer是int的封裝類;
- int和Integer都可以表示某一個數值;
- int和Integer不能夠互用,因爲他們兩種不同的數據類型;
舉例說明:
ArrayList al=new ArrayList();
int n=40;
Integer nI=new Integer(n);
al.add(n);//不可以
al.add(nI);//可以
4、String類能不能被繼承?
不能。因爲String類是被final修飾的類。
注意:final修飾的類不能被繼承。final修飾的方法可以被繼承,不能被重寫。
5、JSP中動態include和靜態include有什麼區別?
\ 類型 | 靜態導入 | 動態導入 |
---|---|---|
元素類型 | 指令元素 | 動作元素 |
語法 | <%@ include file=“path” %> | <jsp:include page="path"></jsp:include> |
發生階段 | 翻譯階段 | 運行階段 |
如果導入頁面發生改變 | 需要重新翻譯 | 不用管 |
運行效率 | 高 | 低 |
6、final、finally、finalize的區別。
- final可以用來修飾類,方法和變量(成員變量或局部變量)。
- finally作爲異常處理的一部分,它只能用在try/catch語句中,並且附帶一個語句塊,表示這段語句最終一定會被執行(不管有沒有拋出異常),經常被用在需要釋放資源的情況下。
- finalize()是在java.lang.Object裏定義的,也就是說每一個對象都有這麼個方法。這個方法在gc啓動,該對象被回收的時候被調用。其實gc可以回收大部分的對象(凡是new出來的對象,gc都能搞定,一般情況下我們又不會用new以外的方式去創建對象),所以一般是不需要程序員去實現finalize的。