1.首先,八種基本數據類型分別是:int、short、float、double、long、boolean、byte、char;
它們的封裝類分別是:Integer、Short、Float、Double、Long、Boolean、Byte、Character。
| 數據類型 | 包 裝 類 | 字節長度 | 默 認 值 |
| int | Integer | 4 | 0 |
| short | Short | 2 | 0 |
| long | Long | 8 | 0l或0L |
| byte | Byte | 1 | 0 |
| float | Float | 4 | 0.0F或0.0f |
| double | Double | 8 | 0.0 |
| char | Character | 2 | u0000 |
| boolean | Boolean | 1 | false |
2.Java中的數值都是有符號的,不存在無符號的數,它們的取值范圍也是固定的,不會隨着硬件環境或者操作系統的改變而改變。
3.原始數據類型在傳遞參數時都是按值傳遞,封裝類都是按引用傳遞。
4.Java語言中,默認聲明的小數是double類型的,因此對float類型的變量進行初始化時需要進行類型轉換。
float類型變量有兩種初始化方法:float f = 1.0f 或者 float f =(float) 1.0 。
5."=="和"equals()"方法:
1)基本型和基本型封裝型進行“==”運算符的比較,基本型封裝型將會自動拆箱變為基本型后再進行比較,因此Integer(0)會自動拆箱為int類型再進行比較,顯然返回true。
2)兩個Integer類型進行“==”比較,如果其值在-128至127,那么返回true,否則返回false, 這跟Integer.valueOf()的緩沖對象有關,這里不進行贅述。
3)兩個基本型的封裝型進行equals()比較,首先equals()會比較類型,如果類型相同,則繼續比較值,如果值也相同,返回true。
4)基本型封裝類型調用equals(),但是參數是基本類型,這時候,先會進行自動裝箱,基本型轉換為其封裝類型,再進行3)中的比較。
int i=0; Integer j=new Integer(0); System.out.println(i==j); System.out.println(j.equals(j)); double d=0.5; Double b=new Double(0.5); System.out.println(d==b); System.out.println(b.equals(d)); Integer aa=-100; Integer bb=-100; System.out.println(aa==bb); Integer aaa=129; Integer bbb=129; System.out.println(aaa==bbb);
程序運行結果:
true true true true true false
6.不同數據類型之間的轉換規則:
在Java中當參與運算的兩個變量的數據類型不同時,就需要進行隱式的數據類型轉換,轉換規則為:從低精度向高精度轉換,即優先級滿足byte<short<char<int<long<float
<double.反之,則需要通過強制類型轉換來完成。
| 操作數1的類型 | 操作數2的類型 | 轉換后的類型 |
| int | byte,short,char |
int |
| long | byte,short,char,int |
long |
| float | byte,short,char,int,long |
float |
| double |
byte,short,char,int,long,float | double |
l類型自動轉換時,需要注意的幾點:
1)char數據類型轉換為高級類型時,會自動轉換為其對應的ASCII碼。
2)byte, char, short 類型的數據在參與運算時會自動轉換為int類型,但當使用''+=" 運算符時就不會產生類型轉換,例如 short s1= 1; s1=(shot) (s1+1) 。short s2 = 1;s1+=1。
3)基本數據類型不能與boolean類型相互轉換。
| 原操作數的類型 | 轉換后操作數的類型 |
| byte | char |
| char | byte char |
| short | byte char |
| int | byte short char |
| long | byte short char int |
| float | byte short char int long |
| double | byte short char int long double |
需要注意的是,在進行強制類型轉換時可能會損失精度。
