Java的基本數據類型及其封裝類
一、8種基本數據類型
二、基本數據類型的包裝類及大小
三、基本數據類型和封裝類的區別
- 定義不同。封裝類是對象,基本數據類型不是;
- 使用方式不同。封裝類需要先new初始化,再通過JVM根據具體情況實例化后賦予定值,基本數據類型可以直接賦值,某些集合類型必須使用包裝類,不能使用基本數據類型,如ArrayList<Integer>
- 初始值不同。包裝類初始值默認為null,基本數據類型根據類型不同而值不同;
- 存儲方式和位置不用。封裝類分拆引用和實例,引用存儲在棧(stack),具體實例存儲在堆(heap),基本數據類型存儲在棧中(stack)。
四、為什么需要包裝類
- 包裝類封裝在java.lang包中;
- 基本數據類型沒有toString()方法;
- 編碼過程中只接收對象的情況,比如List中只能存入對象,不能存入基本數據類型;比如一個方法的參數是Object時,不能傳入基本數據類型,但可以傳入對應的包裝類; 比如泛型等等。
五、表現形式(具體如上表)
- 整數型有三種表現形式。分別是十進制、八進制(以0開頭)、十六進制(以0X或者0x開頭);
- 對於long型的數值,如果值大於int型數值最大值或者小於int型數值的最小值時,應該在數值的末尾加上L或者l(小寫的L),來表示該數值是long型的。如long num=2147483650L;
- 默認情況下,Java中的小數都是double型的,若要聲明一個小數是float型的,則需要在數值的末尾加上F或者f,注意,必須要加F或者f,否則會出錯。如float num=12.34F;
- char ch=’a’;和char ch=97;這兩個式子等價,其中97是字母a在Unicode表中的排序位置,取值范圍為0~65535(十進制),也即0x0000~0xffff(十六進制);
- Unicode編碼表中共有65535個字符,涵蓋了幾乎所有國家的所有語言所涉及的符號,各個符號在Unicode表中的位置依次對應於0x0000~0xffff。可以直接使用‘字符’或者字符在Unicode表中的位置表示某個字符,這兩種表示方式是等價的;
- int型數值和char型數值之間可以進行類型轉換,int賦值為Unicode表中的排序位置的數值;
- Java中還有一些轉義字符,轉義字符是以反斜線’\’開頭,后跟一個或多個字符。轉義字符具有特定的含義,不同於字符原有的意義。
小結:關於char基本數據類型
- char型變量可以被賦值成單引號括住的單個字符(字符可以為Unicode表中的任意一個字符);
- char型變量可以被賦值成Unicode表中的字符所對應位置下標值;
- char型變量可以被賦值成轉義字符。
六、總結
每個包裝類的對象可以封裝一個相應的基本類型的數據,並提供了其它一些有用的方法。包裝類對象一經創建,其內容(所封裝的基本類型數據值)不可改變(類似於String類)