博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA的instanceOf什么时候用啊
阅读量:6211 次
发布时间:2019-06-21

本文共 1333 字,大约阅读时间需要 4 分钟。

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类型的数据。

转载于:https://www.cnblogs.com/zzzzw/p/4976592.html

你可能感兴趣的文章
Spring Scope
查看>>
Swift-structures 和 classes 初始化 - structure
查看>>
header 用法_转
查看>>
Android中Button四种点击事件实现方式
查看>>
memcached-1.4.20 主要启动流程笔记
查看>>
java代码--------实现位运算符不用乘除法啊
查看>>
java web 程序---登陆验证4个页面
查看>>
jquery val()用法详解
查看>>
闭包与迭代器
查看>>
Linux系统配置VSFTP软件详解
查看>>
处理jQuery append加入的元素 绑定事件无效的方法
查看>>
leetcode:Valid Palindrome
查看>>
jquery对JSON字符串的解析--eval函数
查看>>
设计模式--装饰者模式
查看>>
对减少HTTP请求的疑问
查看>>
前端 crypto-js aes 加解密
查看>>
wamp2.5虚拟站点建立
查看>>
Discuz!论坛 水印设置方法
查看>>
OGG How to Resync Tables / Schemas on Different SCN s in a Single Replicat
查看>>
引用真正分页控件(与存储过程联合使用)页面
查看>>