一.JAVA类型转换规则
1.基本类型之间的转换:将值从一种类型转换成另一种类型
2.引用变量的类型转换: 将引用转换为另一类型的引用,并不改变对象本身的类型。
只能转换为: 任何一个(直接或间接)超类的类型(向上转型);
对象所属的类(或其超类)实现的一个接口(向上转型);
被转为引用指向的对象的类型(唯一可以向下转型的情况)
3.当一个引用被转为其超类引用后,通过他能够访问的只有在超类中声明过的方法
栗子:类型的转换
Person继承了Object类,Employee、Customer继承了Person类,Manager继承了Employee类,Person、Company、Car实现了Insurable接口
Manager对象能够被转换成什么类型?
可以被转型为Employee、Person、Objcet 或 Insurable
不能被转型为Customer、Company 或 Car
二.隐式类型转换:自动向高类型转换,不丢失数据
1.基本数据类型:可以转换的类型之间,存储容量低的 自动向 存储容量高的 类型转换
2. 引用变量:
栗子: 子类的引用转换成超类的引用
Employee emp; emp = new Manager(); //将Manager类型的对象直接赋给Employee类的引用变量,
系统会自动将Manager对象塑形为Employee类
栗子:被转换成对象所属类实现的接口类型
Car car = new Car(); //Car是实现了Insurable的类
Insurable i = car; //将car引用赋给Insurable引用,将实现了接口的类(Car)的对象引用转换成了接口类型(Insurable)的引用
三.显式类型转换:高类型向低类型转换,有数据丢失
1.基本数据类型: (int)87.213; (char)65;
2.引用变量: Employee emp;Manager man;
emp =new Manager(); //隐式转换
man=(Manager)emp;//将emp显示转换为它指向的对象类型
四.类型转换的主要应用场合
1.赋值转换:赋值运算符右边的表达式或对象类型转换为左边的类型;
2.方法调用转换:实参的类型转换为形参的类型;
3.算数表达式转换:算数混合运算时,不同类型的操作数转换为相同的类型再进行运算;
4.字符串转换:字符串连接运算时,如果一个操作数为字符串,另一个操作数为其他类型,则会自动将其转化为字符串