【Java学习笔记之二十三】instanceof运算符的用法小结

简介: instanceof运算符用法 运算符是双目运算符,左面的操作元是一个对象,右面是一个类.当左面的对象是右面的类创建的对象时,该运算符运算的结果是true,否则是false 说明: (1)一个类的实例包括本身的实例,以及所有直接或间接子类的实例 (2)instanceof左边操作元显式声明的类...

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=true
10 cc instanceof B=true
11 ab instanceof C=false
12 ac instanceof C=true
13 bc instanceof C=true
14 bb instanceof C=false
15 cc instanceof C=true

 

目录
相关文章
|
2天前
|
Java
探索Java世界的奇妙工具——运算符与表达式运算符
探索Java世界的奇妙工具——运算符与表达式运算符
5 0
|
2天前
|
小程序 Java 容器
03|Java基础语法:讲解标识符、关键字、变量、数据类型、运算符、控制语句(条件分支、循环)
03|Java基础语法:讲解标识符、关键字、变量、数据类型、运算符、控制语句(条件分支、循环)
7 0
|
2天前
|
Java
深入浅出Java基础语法:标识符、关键字、变量、数据类型、运算符与控制语句
深入浅出Java基础语法:标识符、关键字、变量、数据类型、运算符与控制语句
5 0
|
2天前
|
SQL Java
【JAVA进阶篇教学】第九篇:MyBatis-Plus用法介绍
【JAVA进阶篇教学】第九篇:MyBatis-Plus用法介绍
|
3天前
|
Java C语言
java中8种基本类型与运算符
java中8种基本类型与运算符
12 3
|
3天前
|
Java API 调度
【Java多线程】Thread类的基本用法
【Java多线程】Thread类的基本用法
6 0
|
5天前
|
Java
Java一分钟之运算符与表达式初探
【5月更文挑战第7天】本文介绍了Java中的主要运算符,包括算术、比较、逻辑、位、赋值和条件运算符。讨论了类型转换、运算顺序和逻辑短路等常见问题,并提供了避免错误的建议。通过代码示例展示了运算符的使用,强调理解运算符对于编写高效Java代码的重要性。
20 0
Java一分钟之运算符与表达式初探
|
12天前
|
存储 Java
java IO接口(Input)用法
【5月更文挑战第1天】Java的`java.io`包包含多种输入输出类。此示例展示了如何使用`FileInputStream`从`input.txt`读取数据。首先创建`FileInputStream`对象,接着创建一个字节数组存储读取的数据,调用`read()`方法将文件内容填充至数组。然后将字节数组转换为字符串并打印,最后关闭输入流。注意,`InputStream`是抽象类,此处使用其子类`FileInputStream`。其他子类如`ByteArrayInputStream`、`ObjectInputStream`和`BufferedInputStream`各有特定用途。
21 2
|
12天前
|
Java
java lambda 表达式中的双冒号和箭头的用法
java lambda 表达式中的双冒号和箭头的用法
|
12天前
|
Java
java中break和continue的用法例子
java中break和continue的用法例子