博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Java学习笔记之二十三】instanceof运算符的用法小结
阅读量:6673 次
发布时间:2019-06-25

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

instanceof运算符用法

运算符是双目运算符,左面的操作元是一个对象,右面是一个类.当左面的对象是右面的类创建的对象时,该运算符运算的结果是true,否则是false
说明:

(1)一个类的实例包括本身的实例,以及所有直接或间接子类的实例

(2)instanceof左边操作元显式声明的类型与右边操作元必须是同种类或右边是左边父类的继承关系,
(3)不同的继承关系下,编译出错

1 class Person {   2 } 3    4 class Student extends Person {   5 } 6    7 class Postgraduate extends Student {   8 }  9  10 class Animal {  11 }12   13 public class Ex_instanceOf {  14 public static void main(String[] args) {  15    instanceofTest(new Student());  16 }

* 这个程序的输出结果是:p是类Student的实例

*  
* Person类所在的继承树是:Object<--Person<--Student<--Postgraduate。
*  
* 这个例子中还加入一个Animal类,它不是在Person类的继承树中,所以不能作为instanceof的右操作数。
*  
* @param p

1 public static void instanceofTest(Person p) {   2    // p 和 Animal类型不一样,彼此之间没有继承关系,编译会出错   3    // 提示错误:Incompatible conditional operand types Person and Animal   4    // if(p instanceof Animal){   5    // System.out.println("p是类Animal的实例");   6    // }   7    //下面代码的除了第一行都会输出   8    if (p instanceof Postgraduate) System.out.println("p是类Postgraduate的实例");   9    if (p instanceof Person) System.out.println("p是类Person的实例");  10    if (p instanceof Student) System.out.println("p是类Student的实例");  11    if (p instanceof Object) System.out.println("p是类Object的实例");  12  13 }  14 }
1 interface A{   2        3 }   4 class B implements A{   5         6 }   7 class C extends B{   8         9 }  10 public class Iinstanceof {  11   12     public static void main(String[] args) {  13         A ab=new B();  14         A ac=new C();  15         B bc=new C();  16         B bb=new B();  17         C cc=new C();  18         //对象实现一个接口,用这个对象和这个接口进行instanceof判断,都为true。  19         System.out.println("ab instanceof A="+(ab instanceof A));  20         System.out.println("ac instanceof A="+(ac instanceof A));  21         System.out.println("bc instanceof A="+(bc instanceof A));  22         System.out.println("bb instanceof A="+(bb instanceof A));  23         System.out.println("cc instanceof A="+(cc instanceof A));  24         //对象和父类进行instanceof判断,都为true  25         System.out.println("ab instanceof B="+(ab instanceof B));  26         System.out.println("ac instanceof B="+(ac instanceof B));  27         System.out.println("bc instanceof B="+(bc instanceof B));  28         System.out.println("bb instanceof B="+(bb instanceof B));  29         System.out.println("cc instanceof B="+(cc instanceof B));  30         //对象和他的子类进行instanceof判断为false  31         System.out.println("ab instanceof C="+(ab instanceof C));  32         System.out.println("ac instanceof C="+(ac instanceof C));  33         System.out.println("bc instanceof C="+(bc instanceof C));  34         System.out.println("bb instanceof C="+(bb instanceof C));  35         System.out.println("cc instanceof C="+(cc instanceof C));  36     }  37 }

程序输出:

1 ab instanceof A=true 2 ac instanceof A=true 3 bc instanceof A=true 4 bb instanceof A=true 5 cc instanceof A=true 6 ab instanceof B=true 7 ac instanceof B=true 8 bc instanceof B=true 9 bb instanceof B=true10 cc instanceof B=true11 ab instanceof C=false12 ac instanceof C=true13 bc instanceof C=true14 bb instanceof C=false15 cc instanceof C=true

 

转载于:https://www.cnblogs.com/ECJTUACM-873284962/p/7422031.html

你可能感兴趣的文章
Svn结合hook实现自动更新及多Project管理更新
查看>>
sgu 222
查看>>
让spring-data-jpa解放你的DAO
查看>>
58沈剑:架构师的平凡之路
查看>>
Hibernate问题-read-write缓存策略
查看>>
sql中实现汉字的拼音首字母查询
查看>>
Android 动态布局 (代码布局)
查看>>
MYSQL备份和恢复
查看>>
spark安装:在hadoop YARN上运行spark-shell
查看>>
Docker存储驱动之ZFS简介
查看>>
根据sql,一键生成excle 格式, 再通过 zip包压缩为zip
查看>>
PL/SQL Developer 添加数据
查看>>
PHP实时统计文件下载次数
查看>>
linux eth0 改eth1 在改ip
查看>>
乾颐堂鹏同学通过HCIE送给后来者的话
查看>>
JS中的prototype
查看>>
我的友情链接
查看>>
本体编辑和知识获取软件--protege汉化版
查看>>
23张非常精美的圣诞桌面壁纸分享
查看>>
性能下降曲线
查看>>