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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值