Java基礎知識

一、Java平臺概述

Java是一種面向對象的語言,有兩個特徵。一是“一次編譯,到處運行”,獲取了跨平臺的能力。二是垃圾回收機制,JVM自動進行垃圾回收,不需要手動釋放。

我們日常接觸的JRE就是Java運行環境,包括JVM和Java類庫。JDK是Java開發工具集,是JRE的超集,除了JVM和Java類庫,還包括一些其他工具。

Java是解釋執行,這句話不太準確。通常我們開發的Java代碼,通過javac編譯成字節碼,然後JVM加載字節碼轉換成可以執行的機器碼。但是虛擬機可以利用JIT機制,將部分熱點代碼直接編譯成機器碼,是編譯執行。

二、Exception和Error有什麼區別

Exception和Error都是繼承了Throwable類,在Java中只有Throwable類型的實例纔可以被拋出或捕獲,它是異常處理機制的基本組成類型。

根據不同異常情況的分類,可以分爲Exception和Error。Exception是程序正常運行中,可以預料的意外情況,並且應該被捕獲,並進行相應處理。Error是指在正常情況下,不大可能出現的情況,絕大部分法Error都會導致程序處於非正常的,不可恢復的狀態。不需要捕獲。

Exception又可以分爲可檢查異常(Checked Exception)和不檢查異常(Unchecked Exception)。可檢查異常在源代碼裏面必須顯示的進行捕獲處理,這是編譯期檢查的一部分。不可檢查異常就是所謂的運行期異常,類似NullPointerException、ArrayIndexOutOfBoundsException之類,通常是編碼可以避免的邏輯錯誤,根據需要來判斷是否需要捕獲。

三、final、finally、finalize的區別

final可以修飾類,方法,變量。final修飾類表示該類是不可繼承的,修飾方法表示該方法不能重寫,修飾變量表示該變量不可修改。

finally則是Java保證重點代碼一定要被執行的一種機制。通常和try-finally,try-catch-finally配合使用。

finalize是基礎類java.lang.Object的一個方法,它的設計目的是保證對象在被垃圾收集前完成特定資源的收集。

四、String、StringBuffer、StringBuilder有什麼區別

String提供了構造和管理字符串的各種基本邏輯,它是不可變的,被聲明成final class,所有屬性都是final的。由於它的不可變性,類型拼接,裁剪字符串等動作,都會產生新的String對象,相關操作對效率有明顯影響。

StringBuffer的出現是爲了解決字符串操作產生太對中間對象的問題。我們可以用append或add方法,把字符串添加到已有序列的末尾或者指定位置。StringBuffer本質是一個線程安全的可修改字符序列,它保證了線程安全,但也隨之帶來了額外的開銷。

StringBuilder在能力上和StringBuffer相同,但它去掉了線程安全的部分,有效減少了開銷,是絕大部分情況下進行字符串拼接的首選。

五、int和Integer的區別

int是我們常說的整形數字,是Java的8個原始數據類型之一(boolean、byte、short、long、double、int、char、float)。Java語言雖然號稱一起都是對象,但原始數據類型是例外。

Integer是int對應的包裝類,它有一個int類型的字段存儲數據,並且提供了基本的操作,包括數學運算,int和字符串之間的轉換等。在Java5中,引入了自動裝箱和自動柴箱功能。Java可以根據上下文,自動進行切換,極大地簡化了相關編程。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章