我们在写java程序的时候,经常对我们的引用类型进行转换。
1.向上类型转换(隐式/自动类型转换),是小类型到大类型的转换
2.向下类型转换(强制类型转换),是大类型到小类型。
3.使用instanceof运算符,来解决引用对象的类型,避免类型转换的安全性问题
// 创建一个子类对象
Dog dog = new Dog();
// 可以用一个父类的引用指向子类对象
Animal animal = dog; // 没有问题的(向上类型转换/自动类型提升)
// 如果再次将父类引用转换成子类引用
Dog dog1 = animal; // 这样上存在风险的,编译器上不允许我们这样做的
那我们怎么来解决这个问题呢?
Dog dog1 = (Dog)animal; // 强制转换
我们把这个就叫做“向下类型转换”或者叫“强制类型转换”。
Cat cat = (Cat)animal;
/*
1.强制转换为Cat类型,编译器不会报错
2.运行的时候会出错,因为真正的开辟的内存空间上Dog类型的,程序运行会发现2个类型不匹配,所以报错
*/
可以利用instanceof来规避这个问题:
if(animal instanceof Cat){
Cat cat = (Cat)animal;
}
本文详细介绍了Java中的类型转换,包括向上类型转换与向下类型转换的概念,并通过实例演示了如何使用instanceof运算符来确保类型转换的安全性。
459

被折叠的 条评论
为什么被折叠?



