今天百度了一下 instanceof 和 isInstance() 的区别,结果不理想。大多数人先贴一段测试代码,然后分别解释它们的用法,根本不是解释它们之间的区别。
本来想快点搜一下看个结论,不料还是被迫自己研究了一下。
先说结论,很简单:
instanceof 是静态比较。instanceof 后面的类名在编译时就已知且固定了,即 obj instanceof ClassA,ClassA 必须是已经存在的类名,不然编译都过不了。
isInstance() 是动态比较。isInstance() 的左边可以在运行时决定,即可以这样 objA.getClass().isInstance(objB),objA 可以作为某个方法的参数被传进来,这样可以动态的看两个对象是否类型兼容。
这是主要区别,如果硬要扯其它区别还有 instanceof 是 Java 内置的比较运算符,isInstance() 是个方法。
最后附一段测试代码(只示例用法,体现不了区别。注意子类和null):
class A {} class B extends A {} class C extends A {} public class InstanceofDemo { public static void main(String args[]) { A a = new A(); B b = new B(); C c = new C(); System.out.println("a instanceof A: " + (a instanceof A)); //true System.out.println("b instanceof A: " + (b instanceof A)); //true System.out.println("c instanceof A: " + (c instanceof A)); //true System.out.println("a instanceof B: " + (a instanceof B)); //false System.out.println("null instanceof A: " + (null instanceof A)); //false System.out.println("a.getClass().isInstance(a): " + a.getClass().isInstance(a)); //true System.out.println("a.getClass().isInstance(b): " + a.getClass().isInstance(b)); //true System.out.println("b.getClass().isInstance(c): " + b.getClass().isInstance(c)); //false System.out.println("b.getClass().isInstance(null): " + b.getClass().isInstance(null)); //false } }
相关推荐
下面小编就为大家带来一篇详谈Java中instanceof和isInstance的区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Java中instanceOf关键字的用法及特性详解.rar
本篇文章介绍了,在java中instanceof和getClass()的区别分析。需要的朋友参考下
JS中typeof与instanceof的区别
主要介绍了java中instanceof与Class的等价性代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
java学习-java中的继承extents和instanceof关键字
java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。这篇文章主要介绍了老生常谈Java中instanceof关键字的理解,需要的朋友可以参考下
java instanceof运算符
1. instanceof关键字 2. isInstance()方法 3. instanceof,isInstance,isAssignableFrom区别是什
instanceof 运算符是用来在运行时判断对象是否是指定类及其父类的一个实例。这篇文章主要介绍了Java关键字instanceof用法解析,需要的朋友可以参考下
Java SE编程入门教程 java instanceof(共3页).pptx Java SE编程入门教程 java IO(共28页).pptx Java SE编程入门教程 java Math(共11页).pptx Java SE编程入门教程 java object(共9页).pptx Java SE编程入门...
instanceof 马克-to-win java视频的详细的描述介绍
介绍了java final 和instanceof 关键字的区别,有需要的朋友可以参考一下
主要介绍了Java instanceof和getClass()区别实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
instanceof 是 Java 的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回 boolean 的数据类型...接下来通过本文给大家介绍java 中的instanceof用法详解及instanceof是什么意思,需要的朋友参考下吧
java基础——方法的重写、多态+instanceof(csdn)————程序
instanceof是Java的一个二元操作符,和==,>,<是同一类东东。由于它是由字母组成的,所以也是Java的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据
JS:typeof instanceof constructor prototype区别
本文是对JS中typeof与instanceof之间的区别进行了详细的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助
JS中typeof与instanceof之间的区别总结.docx