Java面試基礎知識整理-1

  1. Static存在的意義,static主要意義是在於創建獨立的具體對象的域變量或者方法,以至於即使沒有創建對象,也能使用屬性和調用方法,static關鍵字還有一個比較關鍵的作用就是用來形成靜態代碼塊以優化程序的性能。static塊可以置於類中的任何地方,類中可以有多個static塊。在類初次被加載的時候,會按照static塊的順序來執行每個statci塊,並且只會執行一次。爲什麼說static塊可以用來優化程序性能,是因爲它的特性,只會在類加載的時候執行一次。因此,很多時候可以將一些只需要進行一次的初始化操作放在static代碼塊中進行,被static修飾的變量或者方法是獨立於當前類的任何對象,也就是說這些靜態的變量或者方法不屬於任何一個實例化對象,而是被類直接的所共享。static變量值在類加載的時候分配空間,以後創建類對象的時候不會重新分配。賦值的話,是可以任意賦值的。被static修飾的變量或者方法是優先於對象存在的,也就是說當一個類加載完畢之後,即便沒有創建對象,也可以去訪問。
  2. 面向對象與面向過程的區別?面向過程優點:性能比面向對象高,因爲類調用時需要實例化,開銷比較大,比較消耗資源,比如單片機,嵌入式開發、Linux、Unix等等一般都是採用面向過程的開發,性能是最重要的因素。缺點:沒有面向對象便於維護、容易複用、容易擴展。面向對象優點:易複用、易擴展、易維護,由於是面向對象有封裝、繼承、多態性的特點,可以設計出低耦合的系統,使得系統更加靈活、更加易於擴展。缺點:性能比面向過程低。面向過程是具體化的,流程化的,解決一個問題,你需要一步一步的分析,一步一步的實現。面向對象是模塊化的,你只需要抽象出來一個類對象,這是一個封閉的盒子,在這裏你擁有數據也擁有解決問題的方法,需要什麼功能直接使用就可以了,不必去一步一步的實現,至於這個功能是如何實現的,不需要了解。最後,面向對象的底層還是面向過程,把面向過程抽象出類,然後封裝,方便我們使用就是面向對象了。
  3. 面向對象的三大特性:抽象,抽象是將一類對象的共同特徵總結出來構造類的過程,包括數據抽象和行爲抽象兩個方面,抽象只關心對象的有哪些屬性和行爲,並不關心這些行爲的細節是什麼。封裝,封裝是把一個對象的屬性私有化,同時提供一些可以被外界訪問的屬性的方法。繼承,繼承是使用已有的類的定義作爲基礎建立的新的技術,新類的定義可以增加新的數據或者新的功能,也可以使用父類的功能,但是不能選擇性的繼承父類。有一下三個方面,一、子類擁有父類非private的屬性和方法。二、子類可以擁有自己屬性和方法,即子類可以對父類進行擴展。三、子類可以用自己的方法實現父類的方法。多態,所謂的多態就是程序中定義的引用變量所指向的具體類型和通過該引用變量發出的方法調用編程時並不確定,而是在程序運行的時候才確定,即一個引用變量到底會指向那個類的實例對象,該引用變量發出的方法調用到底是那個類中的實現方法,必須由程序運行期間才能決定。
  4. 什麼是多態機制?Java語言是如何實現多態的?所謂的多態是程序中定義的引用變量所指向的具體類型和通過該引用變量發出的方法調用在編程時並不確定,而是在程序運行期間才確定。多態分爲編譯時多態和運行時多態,其中編輯時多態是靜態的,主要是指方法的重載,它是根據參數列表的不同來區分不同的函數,在運行時談不上多態。而是運行時多態是動態的,它是通過動態綁定來實現的,也就是我們所說的多態性。
  5. 多態的實現,Java中實現多態有三個必要條件:繼承、重寫、向上轉型。繼承:在多態中必須存在有繼承關係的子類和父類。重寫:子類對父類中的某些方法進行重新定義,在調用這些方法時候就會調用子類的方法。向上轉型:在多態中需要將子類的引用賦值給父類,只有這樣該引用才能具備技能調用父類的方法和子類的方法。只有滿足上述三個條件,才能在同一個繼承結構中國使用統一的邏輯實現代碼處理不同的對象,從而達到執行不同的行爲,對於Java而言,它的多態實現截至遵循一個原則,當超類的對象引用變量引用子類的對象時候,被引用的對象的類型而不是引用變量的類型決定了調用誰的成員方法,但是這個被調用的方法必須是在超類中定義過的,也就是說被子類覆蓋了的方法。
  6. 面向對象的五大基本原則?單一職責:類的功能單一,不能包羅萬象。開發封閉原則:一個模塊對於擴展是開放的,對於修改是關閉的,想要增加功能熱烈歡迎,想要修改功能不行。里氏替換原則:子類可以替換父類出現在父類能夠出現的地方。依賴倒置原則:高層模塊不應該依賴於底層模塊,他們都應該依賴於抽象,抽象不應該依賴細節實現。細節實現依賴於抽象。接口分離原則:設計時採用多個於特定客戶有關的接口。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章