物件導向的特徵有哪些面向?
所謂封裝,也就是把客觀事物封裝成抽象的類,並且類別可以把自己的資料和方法只讓可信的類別或物件操作,對不可信的進行資訊隱藏。封裝是物件導向的特徵之一,是物件和類別概念的主要特性。 (推薦學習:java常見面試題)
繼承是指子類別獲得父類別的屬性和方法。如狗是動物的一種,也可以說夠繼承了動物的特性,或說狗是動物的子類。
多態是指一個方法只能有一個名稱,但可以有許多形態,也就是程式中可以定義多個同名的方法,用"一個介面,多個方法"來描述.可以透過方法的參數與型別引用
五大原則:單一職責原則SRP 開放式封閉原則OCP 取代原則LSP 依賴原則DIP 介面分離原則ISP
#成員變數與局部變數的差異
* A:在類別中的位置不同
* 成員變數:在類別中方法外
* 局部變量:在方法定義中或方法宣告上
* B:在記憶體中的位置不同
* 成員變數:在堆記憶體(成員變數屬於物件,對象進堆記憶體)
* 局部變數:在堆疊記憶體(局部變數屬於方法,方法進端記憶體)
* C:生命週期不同
* 成員變數:隨著物件的創建而存在,隨著物件的消失而消失
* 局部變數:隨著方法的呼叫而存在,隨著方法的調用完而消失
* D:初始化值不同
* 成員變數:有預設初始化值
* 局部變數:沒有預設初始化值,必須定義,賦值,然後才能使用。
靜態變數和成員變數的差異
* 靜態變數也叫類別變數 成員變數也叫物件變數
* A:所屬不同
* 靜態變數屬於類,所以也稱為為類別變數
* 成員變數屬於對象,所以也稱為實例變數(對象變數)
* B:記憶體中位置不同
* 靜態變數儲存於方法區的靜態區
* 成員變數儲存於堆疊記憶體
#* C:記憶體出現時間不同
* 靜態變數隨著類別的載入而載入,隨著類別的消失而消失
* 成員變數隨著物件的創建而存在,隨著物件的消失而消失
* D:調用不同
# * 靜態變數可以透過類別名稱調用,也可以透過物件呼叫
* 成員變數只能透過物件名稱呼叫
this和super的差異和應用
##* A:this和super都代表什麼
* this:代表目前物件的引用,誰來呼叫我,我就代表誰 * super:代表目前物件父類別的引用#* B:this和super的使用差異
* a:呼叫成員變數 * this.成員變數呼叫本類別的成員變數,也可以呼叫父類別的成員變數 * super.成員變數呼叫父類別的成員變數 * b:呼叫建構方法 * this(...) 呼叫本類別的建構方法 * super(...) 呼叫父類別的建構方法 * c:呼叫成員方法 * this.成員方法呼叫本類別的成員方法,也可以呼叫父類別的方法 * super.成員方法呼叫父類別的成員方法排序都有哪幾種方法?請列舉
排序的方法有:插入排序(直接插入排序、希爾排序),交換排序(冒泡排序、快速排序),選擇排序(直接選擇排序、堆排序),歸併排序,分配排序(箱排序、基數排序)快速排序的偽代碼。String, StringBuffer StringBuilder的區別。
String的長度是不可變的;Overload 和 Override 的差別。 Overloaded 的方法是否可以改變傳回值的型別?
答案:方法的重寫 Overriding 和重載 Overloading 是 Java 多態性的不同表現。重寫 Overriding 是父類別與子類別之間多態性的表現,而重載 Overloading 是一個類別中多態性的一種表現。如果在子類別中定義某方法與其父類別有相同的名稱和參數,我們說該方法被重寫 (Overriding)。
子類別的物件使用這個方法時,將呼叫子類別中的定義,對它而言,父類別中的定義如同被「屏蔽」了。如果在一個類別中定義了多個同名的方法,它們或有不同的參數個數或有不同的參數類型,則稱為方法的重載(Overloading)。 Overloaded 的方法是可以改變傳回值的型別。
final, finally的差異?
答案:final:修飾符(關鍵字);如果一個類別被宣告為final,表示它不能再派生出新的子類,不能作為父類被繼承,因此一個類別不能既被宣告為abstract的,又被宣告為final 的;將變數或方法宣告為final,可以保證它們在使用中不被改變;被宣告為final 的變數必須在宣告時給定初值,而在以後的引用中只能讀取,不可修改;被宣告為final 的方法也同樣只能使用,不能重載。
finally:再異常處理時提供finally 區塊來執行任何清除操作;如果拋出一個異常,那麼相匹配的catch 子句就會執行,然後控制就會進入finally 區塊(如果有的話)。
常見的幾個運行異常。
java.lang.nullpointerexception(空指標異常)
java.lang.classnotfoundexception(指定的類別不存在)
java.lang.arithmeticexception(數學運算異常)
java.lang.arrayindexoutofboundsexception(數組下標越界異常)
IOException(輸入輸出異常)
數組操作的兩個常見小問題越界和空指標
* A:案例示範
* a:ArrayIndexOutOfBoundsException:陣列索引越界異常
* 原因:你存取了不存在的索引。
* b:NullPointerException:空指標例外
* 原因:陣列已經不在指向堆記憶體了。而你還用陣列名去存取元素。
* int[] arr = {1,2,3}; * arr = null; * System.out.println(arr[0]);
JAVA語言如何進行例外處理,關鍵字:throws,throw,try,catch,finally分別代表什麼意義?在try區塊中可以拋出異常嗎?
答案:Java透過物件導向的方法進行例外處理,把各種不同的例外分類,並提供了良好的介面。
在Java中,每個異常都是一個對象,它是Throwable類別或其它子類別的實例。當一個方法出現異常後便拋出一個異常對象,該對像中包含有異常訊息,調用這個對象的方法可以捕獲到這個異常並進行處理。
Java的例外處理是透過5個關鍵字來實現的:try、catch、throw、throws和finally。一般情況下是用try來執行一段程序,如果出現異常,系統會拋出(throws)一個異常,這時候你可以通過它的類型來捕捉(catch)它,或最後(finally)由缺省處理器來處理。
用try來指定一塊預防所有"異常"的程式。緊跟在try程式後面,應包含一個catch子句來指定你想要捕捉的"異常"的類型。
throw語句用來明確地拋出一個"例外"。
throws用來標示一個成員函數可能拋出的各種"例外"。
Finally為確保一段程式碼不管發生什麼事"異常"都被執行一段程式碼。
可以在一個成員函數呼叫的外面寫一個try語句,在這個成員函數內部寫另一個try語句保護其他程式碼。每當遇到一個try語句,"異常"的框架就會放到堆疊上面,直到所有的try語句都完成。
如果下一級的try語句沒有對某種"異常"進行處理,堆疊就會展開,直到遇到有處理這種"異常"的try語句。
伺服器收到用戶提交的表單數據,到底是呼叫Servlet的doGet()還是doPost()方法?
答案:HTML的