强制类型转换的概念
将一个类型强制转换成另一个类型的过程称为强制类型转换。
强制类型转换的使用
格式:所要转换的类型 变量名 = (所要转换的类型)原类型;
例子: double x = 3.14;
int y = (int) x; (这种转换会所示精度,即强制转换后y的值为3)
强制类型转换在引用类型中的使用
强制类型转换经常在多态中使用,即父类引用既可以引用自己的实例,又可以引用子类的实例。当子类的实例被父类所引用时,只可以调用父类中的方法,如果想调用子类的所有方法,必须经过强制类型转换。例子如下:
public class ClassCast {
public static void main(String[] args) {
//利用多态的特性
Object object = new ClassCast();
//进行强制类型转换
ClassCast classCast = (ClassCast) object;
classCast.print();
}
public void print() {
System.out.println("ClassCast类的实例");
}
}
但是上面的代码不够严谨,即使用强制类型转换经常会报ClassCastException(类型转换异常)的错误,例子如下:
public class ClassCast {
public static void main(String[] args) {
//利用多态的特性
Object object = new Object(); (区别在这,换成了创建一个Object的实例)
//进行强制类型转换
ClassCast classCast = (ClassCast) object;
classCast.print();
}
public void print() {
System.out.println("ClassCast类的实例");
}
}
报错信息:
使用强制类型转换的正确方式:
使用 instanceOf()首先判断 引用的实例 是否是所需要强制类型转换的类的实例,如果是则进行强制类型转换,代码如下:
public class ClassCast {
public static void main(String[] args) {
//利用多态的特性
Object object = new ClassCast();
//进行判断
if (object instanceof ClassCast) {
//进行强制类型转换
ClassCast classCast = (ClassCast) object;
classCast.print();
}
}
public void print() {
System.out.println("ClassCast类的实例");
}
}