instanceof的使用以及与引用类型的强制类型转换的关系

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了instanceof的使用以及与引用类型的强制类型转换的关系相关的知识,希望对你有一定的参考价值。

   我们在编写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

以上是关于instanceof的使用以及与引用类型的强制类型转换的关系的主要内容,如果未能解决你的问题,请参考以下文章

js中instanceof与typeof的区别以及instanceof的门道

Java学习笔记(二十一):类型转换和instanceof关键字

instanceof

java引用类型的类型转换规则是啥?

JavaScript instanceof 运算符深入剖析

多态 与 instanceof运算符