• JAVA的instanceOf什么时候用啊


     1 当你拿到一个对象的引用时(例如参数),你可能需要判断这个引用真正指向的类。所以你需要从该类继承树的最底层开始,
      使用instanceof操作符判断,第一个结果为true的类即为引用真正指向的类
    2 class Person{} 3 class Student extends Person{} 4 class Postgraduate extends Student{} 5 class Animal{} 6 public class InstanceofTester { 7 public static void main(String[] args) { 8 instanceofTest(new Student()); 9 } 10 public static void instanceofTest(Person p){ 11 // 判断p的真正类型 12 if (p instanceof Postgraduate){ 13 System.out.println("p是类Postgraduate的实例"); 14 } else if(p instanceof Student){ 15 System.out.println("p是类Student的实例"); 16 } else if(p instanceof Person){ 17 System.out.println("p是类Person的实例"); 18 } else if(p instanceof Object) { 19 System.out.println("p是类Object的实例"); 20 } 21 /*if(p instanceof Animal){//此错编译错误,所以做注释 22 System.out.println("p是类Animal的实例"); 23 }*/ 24 } 25 } 26 27 这个程序的输出结果是:p是类Student的实例 28 29 Person类所在的继承树是:Object<--Person<--Student<--Postgraduate。 30 31 这个例子中还加入一个Animal类,它不是在Person类的继承树中,所以不能作为instanceof的右操作数。

     这个demo是错误的。

    1.if...else if判断只要满足前面的条件就不会继续执行,即使后面为真,所以上面的输出的确只会有一个。

    但是如果将判断全部改为if的话,以上面为例,就会输出:p是类Student的实例 p是类Person的实例

    p是类Object的实例。因为if判断只要满足条件就会执行,不分先后。

    2.我只想说作者的说法就是错误的,p 是引用, new + 构造方法才是实例,也可以叫做对象

    3.instanceof是Java的一个二元操作符,和==,>,<是同一类东东。由于它是由字母组成的,所以也是Java的保留关键字。

    它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据。

    http://rodney.cnblogs.com/archive/2005/08/18/instanceof.html

    ---- 动动手指关注我!或许下次你又能在我这里找到你需要的答案!ZZZZW与你一起学习,一起进步!
  • 相关阅读:
    屏幕适配的发展历史
    NSURLConnection / NSURLSession/ SDWebImage
    版本工具管理之----git
    Framework、Cocoa、Xcode
    UICollectionView-网格视图
    博客园每日一卦o(* ̄︶ ̄*)o
    平凡的程序猿
    如何使用java代码启动tomcat和打开浏览器
    web项目部署以及放到ROOT目录下
    java项目打包生成MD5文件
  • 原文地址:https://www.cnblogs.com/zzzzw/p/4976592.html
Copyright © 2020-2023  润新知