更新時間:2022-12-21 15:30:04 來源:動力節點 瀏覽2197次
1、面向對象的特征有哪些方面
面向對象的特征主要有以下幾個方面:
1)抽象:抽象就是忽略一個主題中與當前目標無關的那些方面,以便更充分地 注意與當前目標有關的方面。抽象并不打算了解全部問題,而只是選擇其中的一 部分,暫時不用部分細節。
抽象包括兩個方面:一是過程抽象,二是數據抽象。
2)繼承:繼承是一種聯結類的層次模型,并且允許和鼓勵類的重用,它提供了一種明確表述共性的方法。對象的一個新類可以從現有的類中派生,這個過程稱為類繼承。新類繼承了原始類的特性,新類稱為原始類的派生類(子類),而原始類稱為新類的基類(父類)。派生類可以從它的基類那里繼承方法和實例變量 ,并且類可以修改或增加新的方法使之更適合特殊的需要。
3)封裝:封裝是把過程和數據包圍起來,對數據的訪問只能通過已定義的界面 。 面向對象計算始于這個基本概念,即現實世界可以被描繪成一系列完全自治封裝的對象,這些對象通過一個受保護的接口訪問其他對象。
4)多態性:多態性是指允許不同類的對象對同一消息作出響應。多態性包括參數化多態性和包含多態性。多態性語言具有靈活、抽象、行為共享、代碼共享的 優勢,很好的解決了應用程序函數同名問題。
2、Java多態的具體體現
面向對象編程有四個特征:抽象,封裝,繼承,多態。多態有四種體現形式:
1)接口和接口的繼承;
2)類和類的繼承;
3)重載;
4) 重寫。
其中重載和重寫為核心。
重載:重載發生在同一個類中,在該類中如果存在多個同名方法,但是方法的參數類型和個數不一樣,那么說明該方法被重載了;
重寫:重寫發生在子類繼承父類的關系中,父類中的方法被子類繼承,方法名、返回值類型、參數完全一樣,但是方法體不一樣,那么說明父類中的該方法被子類重寫了。
3、什么時候用 assert?
答:assertion(斷言)在軟件開發中是一種常用的調試方式,很多開發語言中都支持這種機制。
一般來說,assertion 用于保證程序最基本、關鍵的正確性。 assertion 檢查通常在開發和測試時開啟。為了提高性能,在軟件發布后,assertion 檢查通常是關閉的。在實現中,斷言是一個包含布爾表達式的語句, 在執行這個語句時假定該表達式為 true;如果表達式計算為 false,那么系統 會報告一個 Assertionerror。 斷言用于調試目的: assert(a > 0); // throws an Assertionerror if a <= 0 斷言可以有兩種形式: assert Expression1 ;assert Expression1 : Expression2 , Expression1 應該總是產生一個布爾值, Expression2 可以是得出一個值的任意表達式;這個值用于生成顯示更多調試信息的 String 消息。
斷言在默認情況下是禁用的,要在編譯時啟用斷言,需使用 source 1.4 標記 : javac -source 1.4 Test.java 。要在運行時啟用斷言,可使用 -enableassertions 或者 -ea 標記。 要在運行時選擇禁用斷言,可使用 -da 或者 -disableassertions 標記。 要在系統類中啟用斷言,可使用 -esa 或者 -dsa 標記。還可以在包的基礎上啟用或者禁用斷言。可以在預計正常情況下不會到達的任何位置上放置斷言。斷言可以用于驗證傳遞給私有方法的參數。
不過,斷言不應該用于驗證傳遞給公有方法的參數,因為不管是否啟用了斷言,公有方法都必須檢查其參數。不過,既可以在公有方法中,也可以在非公有方法中利用斷言測試后置條件。另外,斷言不應該以任何方式改變程序的狀態。
4、String、StringBuffer 、StringBuilder 的區別:
String:字符串常量,不可變,使用字符串拼接時是不同的兩個空間;
StringBuffer:字符串變量,可變,線程安全,字符串拼接直接在字符串后追加;
StringBuilder:字符串變量,可變,非線程安全,字符串拼接直接在字符串后追加;
1)StringBuilder執行效率高于StringBuffer高于String;
2)String是一個常量,是不可變的,所以對于每一次+=賦值都會創建一個新的對象,StringBuffer和StringBuilder都是可變的,當進行字符串拼接時采用append方法,在原來的基礎上進行追加,所以性能比String要高,又因為StringBuffer是線程安全的而StringBuilder是線程非安全的,所以StringBuilder的效率高于StringBuffer;
3)對于大數據量的字符串的拼接,采用StringBuffer,StringBuilder。
5、數組有沒有length()方法?String 有沒有length()方法?
答:數組沒有length()方法,有length的屬性。String有length()方法。JavaScript中,獲得字符串的長度是通過length屬性得到的,這一點容易和Java混淆。
以上就是“中級Java工程師面試題,附帶答案”,你能回答上來嗎?如果想要了解更多的Java面試題相關內容,可以關注動力節點Java官網。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習