一、基本類型 primitive(原始 簡單)
byte short int long float double char boolean
二、引用類型 reference
String、數(shù)組、類等
- 包裝類型
Byte、Short、Integer、Long、Float、Double、Character、Boolean
對基本類型進(jìn)行封裝,包裝類型對應(yīng)的是類,相應(yīng)地有對象和方法 - 特殊值
null
NullPointerException 空指針異常:當(dāng)引用類型取值為null時(shí),想進(jìn)一步使用它(調(diào)用方法和字段),會拋出錯誤
判斷是否是null:
if (xx != null)
三、類型轉(zhuǎn)換
-
為什么要類型轉(zhuǎn)換
聲明變量之后,必須賦予變量和聲明類型一致的數(shù)據(jù)類型
1、基本類型間
基本類型轉(zhuǎn)換 - 順箭頭:隱式轉(zhuǎn)換(java自動轉(zhuǎn)換)
byte a = 10;
int b = a;
- 逆箭頭:強(qiáng)制轉(zhuǎn)換
在要轉(zhuǎn)換的變量前加括號聲明新類型
int c = 20;
byte d = (byte) c
注意:強(qiáng)制轉(zhuǎn)換有可能損失精度
2、包裝類型和基本類型間

包裝類型和基本類型之間的轉(zhuǎn)換
3、引用類型之間
- 為什么要轉(zhuǎn)?
(1)向上轉(zhuǎn)型
a.使用父類型統(tǒng)一處理子類型。例如Animal是Cat類和Dog類的父類型,如果一個靜態(tài)方法想同時(shí)對Cat類和Dog類處理,就可以傳入父類型
static void test(Animal a){
};
test(new Cat());
test(new Dog());
b.數(shù)組類型可以使用父類型統(tǒng)一
Animal[] cats = new Animal[] {new Cat(), new Dog()};
(2)向下轉(zhuǎn)型
將轉(zhuǎn)換的父類型轉(zhuǎn)換回來
-
隱式轉(zhuǎn)換【向上轉(zhuǎn)型】:待轉(zhuǎn)換的對象和目標(biāo)類型之間,要符合“是一個”的關(guān)系
注意:轉(zhuǎn)換之后,對象還是對象,只是用父類型來表示它
關(guān)系舉例
// 貓類型轉(zhuǎn)換為動物類型和Object類型
Animal a = new Cat()
Object b = new Cat()
- 強(qiáng)制轉(zhuǎn)換【向下轉(zhuǎn)型】:與基本類型的強(qiáng)制轉(zhuǎn)換一樣,加括號聲明
注意:強(qiáng)制轉(zhuǎn)換需要滿足轉(zhuǎn)換對象和目標(biāo)類型之間符合“是一個”關(guān)系,舉例如下
// 隱式轉(zhuǎn)換
Animal a = new Cat();
Object b = new Cat();
// 強(qiáng)制轉(zhuǎn)換
Cat c = (Cat) a; //將Animal類強(qiáng)制轉(zhuǎn)換為cat類,因?yàn)閍代表的對象本來就是cat,轉(zhuǎn)換合法
Dog d = (Dog) d; //不合法,a代表的對象是cat
Cat e = (Cat) b; //合法。b是cat對象
Animal g = (Animal)b;合法,b是cat對象,和Animal符合“是一個”關(guān)系
4、不屬于以上三種

