(Java面試題)面向對象編程有哪些特點?String和StringBuffer有什麼區別?Integer和int有什麼區別?

Java複習題

1、面向對象編程的特點。

  • 封裝:數據和代碼捆綁在一起,避免外界干擾和不確定性訪問。封裝可以使得代碼模塊化。

  • 繼承:讓某種類型對象獲得另一個類型對象的屬性和方法。繼承可以擴展已存在的代碼

  • 多態:同一事物表現出不同事物的能力,即向不同對象發送同一消息,不同的對象在接收時會產生不同的行爲(重載實現編譯時多態,虛函數實現運行時多態)。多態的目的則是爲了接口重用

2、String和StringBuffer有什麼區別?
String不可擴展,不能修改字符串。
當對字符串進行修改的時候,需要使用 StringBuffer 和 StringBuilder 類。
和 String 類不同的是,StringBuffer 和 StringBuilder 類的對象能夠被多次的修改,並且不產生新的未使用對象。

StringBuilder 類在 Java 5 中被提出,它和 StringBuffer 之間的最大不同在於 StringBuilder 的方法不是線程安全的(不能同步訪問)。
由於 StringBuilder 相較於 StringBuffer 有速度優勢,所以多數情況下建議使用 StringBuilder 類。然而在應用程序要求線程安全的情況下,則必須使用 StringBuffer 類。

3、Integer和int有什麼區別?

  1. int是基本數據類型;
  2. Integer是int的封裝類;
  3. int和Integer都可以表示某一個數值;
  4. 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的。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章