原始值的类型转换
加宽转换(自动)-将较小的字体转换为较大的字体
byte
-> short
-> char
-> int
-> long
-> float
-> double
缩小转换(手动)-将较大的类型转换为较小的类型
double
-> float
-> long
-> int
-> char
-> short
-> byte
将较小尺寸的类型传递给较大尺寸的类型时,将自动完成加宽转换:
int myInt = 9;
// Automatic casting:int ot double,自动进行转换,将int转换为double
double myDouble = myInt;
System.out.println(myInt);
System.out.println(myDouble);
// result:
// 9
// 9.0
必须通过将类型放在值前面的括号中来手动进行缩小转换:
double myDouble = 9.78;
int myInt = (int) myDouble;
System.out.println(myInt);
System.out.println(myDouble);
对象向上向下转换
当子类转换为父类的时候是自动转换的(隐式转换)
把父类对象引用转换为子类对象的引用需要使用(强制转换)
将父类对象引用类型赋值给子类引用时可以使用instanceof检查该父类引用的对象能不能转换为子类对象引用
把父类引用的对象赋值给子类引用需要使用instanceof进行类型判断,否则编译出错。
instanceof检查引用类型
检查一个对象变量是否是该类或者该类的父类的引用类型,如果是则返回true,否则返回false
为什么子类对象instanceof一个父类也会返回true?
instaceof判断对象是否是否属于某类,因为子类属于父类,所以子类对象instanceof父类return true