1. 程式人生 > >Java基礎知識彙總系列(一)

Java基礎知識彙總系列(一)

1..資料型別

2.基本資料型別有8種,分別是boolean、byte、short、int、long、float、double、char。

3.Java是面向物件的語言,但基本資料型別不是物件,但考慮到其在程式設計中使用的頻率極高,所以將基本資料型別設計為非物件型別,將其儲存在棧中,使其存取速度要快於存放在堆中的對應包裝類的例項物件。

4.所有的基本資料型別都使用了final修飾,因此無法繼承他們擴充套件新的類,也無法重寫他們的任何方法。

5.基本資料型別存放在棧記憶體中,而引用資料型別存放在堆記憶體中。棧記憶體中的資料讀取效率要高於堆記憶體中的資料讀取效率。

6.float是單精度浮點數,精度為6~7位有效數字;double是雙精度浮點數,精度為15~16位有效數字,Java中宣告的小數預設為double型別的,若宣告float x = 0.1 會報錯;雖然double精度比float高,但其記憶體開銷是float的兩倍,而且運算速度比float相比也較慢,所以能用float還是用float。

7.自動拆箱裝箱機制實在程式碼編譯時完成的,裝箱階段自動替換為valueOf()方法,拆箱階段替換為xxxValue()方法。

8.對於 Integer 型別的 valueOf 方法引數如果是 -128~127 之間的值會直接返回內部快取池中已經存在物件的引用,引數是其他範圍值則返回新建物件;但是Double型別不管傳入的引數是什麼範圍的,都會new一個物件來表達該值(因為在指定範圍內,浮點型資料的個數是不確定的,而Integer型別的個數是可以確定的,所以可以快取)。

9.對於兩邊都是包裝器型別的比較,==比較的是物件的引用,equals比較的是物件的值,如果兩邊有一邊有表示式的話,則會觸發拆箱過程,最終比較的是物件的值;對於包裝器型別,equals()不會進行型別轉換,型別不一樣,直接返回false.