糯米文學吧

位置:首頁 > 計算機 > java語言

Java基礎知識問答

java語言2.82W

Java語言作為靜態面向對象編程語言的代表,極好地實現了面向對象理論,允許程序員以優雅的思維方式進行復雜的編程。下面小編整理了Java基礎知識問答,希望對大家有幫助!

Java基礎知識問答

 面向對象的特點

抽象:是或略一個主題中與當前目標的無關的因素,一邊充分考慮有關的內容。抽象並不能解決目標中所有的問題,只能選擇其中的一部分,忽略其他的部分。抽象包含兩個方面:一是過程抽象;一是數據抽象。

繼承:是一種聯接類的層次模型,允許和鼓勵類的重用,提供了一種明確的共性的方法。對象的一個新類可以從現有的類中派生,這叫做類的繼承。心累繼承了原始類的特性,新類稱為原始類的派生類或者是子類,原始類稱為新類的基類或者父類。子類可以從父類那裏繼承父類的方法和實現變量,並卻允許新類增加和修改新的方法使之滿足需求。

封裝:就是把過程和數據包圍起來。對數據的訪問只是允許通過已經定義好的界面。面向對象就是基於這個概念,即現實世界可以描述為一系列完全自治,封裝的對象,這些對象通過固定受保護的接口訪問其他對象。

多態性:是指不同類的對象對同一個請求作出相應。多態性包括參數多態和包含多態。多態性語言具有靈活、抽象、行為共享、代碼共享的優勢。很好的解決了應用程序中同名的問題。

int 和 Integer 有什麼區別

java提供了兩種類型:引用類型和原始類型(內置類型)。int是java的原始數據類型,Integer是java為int提供的封裝類。引用類型和原始類型的行為完全不同,並且他們具有不同的語義,引用類型和原始類型具有不同的特徵和用法,他們包括:大小和速度問題,這種類型以哪種類型的數據結構存儲,當引用類型和原始類型有用作某個類的實例數據時制定的缺省值。對象應用實例變量的缺省值為null,而原始類型實例變量的缺省值與它們的類型有關。

 final、finally、finalize的區別

final是一種聲明屬性,作用與類、方法和變量;final修飾的變量的值不能夠再改變,final修飾的方面不能被覆蓋,final修飾的類不能被繼承。 finally是異常處理語句的一部分,表示總是執行。 finalize是object類的一個子方法,在垃圾回收器執行是調用回收對象的此方法,此方法可以被覆蓋提供資源回收時的其他資源回收。如文件關閉等。

 heap和stack的區別

棧是一種現行結構,其添加和刪除元素應在同一段完成,棧按照先進後出的方式進行處理。堆是棧的一個組成元素。

assert什麼時候使用assertion(斷言)在軟件開發中使用中常見的調試方式,很多編程語言中都支持這種機制,在實現中,assertion就是在程序中的一條語句,他對一個boolean表達式進行檢查,一個正確的程序必須保證這個boolean表達式的值是true。如果該值為false,説迷宮程序已經處於不正確的狀態了,系統將給出警告或者退出。一般來説assertion用來保證程序最基本、關鍵的正確性,assertion檢查通常在開發和測試時啟動,為了提高效率,在軟件發佈後,assertion檢查通常是關閉的。

 GC是什麼?為什麼要有GC?

GC是垃圾回收的意思(gabage collection),內存處理器是編程人員容易出現問題的地方,忘記或者錯誤的內存回收導致程序或者系統的不穩定甚至崩潰,java的GC功能可以自動監測對象是否超過作用域從而達到自動回收內存的目的,java語言沒有提供釋放已分配內存的俄顯示操作方法。

 啟動線程使用run還是start?

啟動一個線程用start方法,使線程所代表的虛擬處理機處於可運行的狀態,這意味着它可以有JVM(java虛擬機)來調度和執行,這並不意味着線程就會立即執行。run方法可以產生必須退出的標誌來停止一個線程。

垃圾回收機制的優點,並考慮2種回收機制

java語言中一個顯著的特點就是引入了垃圾回收機制,使C++程序員最頭痛的'內存管理問題迎刃而解,他使得java程序員在編寫承學的哦時候不用再考慮內潤管理問題了,由於有了垃圾回收機制,java中的對象不再有“作用域”的概念,只是在對象引用的時候才有“作用域”,垃圾回收可以有效的防止內存泄漏,有效的使用可以使用的內存。垃圾回收器通常作為一個單獨的低級別的線程運行,不可預知的情況下對內存堆中已經死亡的或者長時間沒有使用的對象進行清楚的哦回收,承諾過許願程序員不能實時的調用來幾回收器對某個對象或所有對象進行垃圾回收,回收機制有分帶複製來幾回收和標記垃圾回收,增量垃圾回收。

當一個對象作為參數傳遞給一個方法後,此方法可以給便這個對象的屬性,並可以返回變化後的結果,那麼這裏到底是值的傳遞還是引用傳遞?

是值得傳遞,java語言中只有值傳遞參數,對一個對象實例作為一個參數被傳遞到方法中時,參數的值就是對該對象的引用,對象的內容可以在被調用的方法中改變,但對象的引用是永遠改變不了的。

構造器Constructor是否可以被override?

構造器(override)不能被繼承,因此不能重寫overriding,但是可以被重載overloading。

標籤:JAVA 問答