我们在编写Java程序时,引用变量只能调用他编译时类型的方法,而不能调用他运行时类型的方法,但是如果需要调用运行时的类型的方法,则必须把它强制类型转换为运行时类型,因此,在进行类型转换时需要注意:
1.基本类型之间的转换只能在数值类型之间进行,比如数值类型和布尔类型之间不能进行类型转换。
2.引用类型之间的转换只能在具有继承关系的两个类型之间进行。
第一点我们可以很容易理解,对于第二点,我们在编程时可能辨别不好是否具有继承关系,但是,别担心,Java语言给我们提供了方便,使用instanceof运算符判断是否可以成功转换,从而避免出现CLassCaseException异常,这样可以保证程序更加健壮。
比如:
if(obj instanceof String)
{
String str=(String)obj;
}
因此,接下来介绍instanceof的用法,instanceof的前一个操作数通常是一个引用类型变量,后一个操作数通常是一个类(也可以是一个接口,可以把接口理解为一种特殊的类),它用于判断前面的对象是否是后面的类,或者其子类、实现类的实例,如果是则返回true,不是返回false。注意,instanceof运算符前面操作数的编译时类型要么与后面的类相同,要么与后面的类具有父子继承关系。
比如:
Object hello ="hello";
System.out.println(hello instanceof Object); //返回true
System.out.println(hello instanceof Math); //返回false
时间: 2024-10-29 01:17:39