【Java学习笔记之二十三】instanceof运算符的用法小结
2017-08-24 11:09
483 查看
instanceof运算符用法
运算符是双目运算符,左面的操作元是一个对象,右面是一个类.当左面的对象是右面的类创建的对象时,该运算符运算的结果是true,否则是false说明:
(1)一个类的实例包括本身的实例,以及所有直接或间接子类的实例
(2)instanceof左边操作元显式声明的类型与右边操作元必须是同种类或右边是左边父类的继承关系,
(3)不同的继承关系下,编译出错
class Person { } class Student extends Person { } class Postgraduate extends Student { } class Animal { } public class Ex_instanceOf { public static void main(String[] args) { instanceofTest(new Student()); }
* 这个程序的输出结果是:p是类Student的实例
*
* Person类所在的继承树是:Object<--Person<--Student<--Postgraduate。
*
* 这个例子中还加入一个Animal类,它不是在Person类的继承树中,所以不能作为instanceof的右操作数。
*
* @param p
public static void instanceofTest(Person p) { // p 和 Animal类型不一样,彼此之间没有继承关系,编译会出错 // 提示错误:Incompatible conditional operand types Person and Animal // if(p instanceof Animal){ // System.out.println("p是类Animal的实例"); // } //下面代码的除了第一行都会输出 if (p instanceof Postgraduate) System.out.println("p是类Postgraduate的实例"); if (p instanceof Person) System.out.println("p是类Person的实例"); if (p instanceof Student) System.out.println("p是类Student的实例"); if (p instanceof Object) System.out.println("p是类Object的实例"); } }
interface A{ } class B implements A{ } class C extends B{ } public class Iinstanceof { public static void main(String[] args) { A ab=new B(); A ac=new C(); B bc=new C(); B bb=new B(); C cc=new C(); //对象实现一个接口,用这个对象和这个接口进行instanceof判断,都为true。 System.out.println("ab instanceof A="+(ab instanceof A)); System.out.println("ac instanceof A="+(ac instanceof A)); System.out.println("bc instanceof A="+(bc instanceof A)); System.out.println("bb instanceof A="+(bb instanceof A)); System.out.println("cc instanceof A="+(cc instanceof A)); //对象和父类进行instanceof判断,都为true System.out.println("ab instanceof B="+(ab instanceof B)); System.out.println("ac instanceof B="+(ac instanceof B)); System.out.println("bc instanceof B="+(bc instanceof B)); System.out.println("bb instanceof B="+(bb instanceof B)); System.out.println("cc instanceof B="+(cc instanceof B)); //对象和他的子类进行instanceof判断为false System.out.println("ab instanceof C="+(ab instanceof C)); System.out.println("ac instanceof C="+(ac instanceof C)); System.out.println("bc instanceof C="+(bc instanceof C)); System.out.println("bb instanceof C="+(bb instanceof C)); System.out.println("cc instanceof C="+(cc instanceof C)); } }
程序输出:
ab instanceof A=true ac instanceof A=true bc instanceof A=true bb instanceof A=true cc instanceof A=true ab instanceof B=true ac instanceof B=true bc instanceof B=true bb instanceof B=true cc instanceof B=true ab instanceof C=false ac instanceof C=true bc instanceof C=true bb instanceof C=false cc instanceof C=true
相关文章推荐
- 【Java学习笔记之二十一】抽象类在Java继承中的用法小结
- 【Java学习笔记之十九】super在Java继承中的用法小结
- Java学习笔记(35)--instanceof的用法
- 【Java学习笔记之二十】final关键字在Java继承中的用法小结
- 【Java学习笔记之二十一】抽象类在Java继承中的用法小结
- 黑马程序员 java学习笔记之一(java中this和super关键字的用法)
- 学习笔记(4)~java中Scanner的用法
- Java学习笔记---16.面向对象编程11-Java多态性,instanceof及Object类
- 【JAVA学习笔记】02 运算符、表达式
- Java学习笔记——this的用法
- Java学习笔记之Formatter的用法详解
- (JAVA SE 学习笔记)Java.SE.第005讲.运算符续.Operator.cont
- java核心技术学习笔记3---运算符与类型转换
- 学习Java运算符时的取余(%)和自加减(++、--)的小结
- Java学习笔记之Formatter的用法详解(输出格式化)
- (JAVA SE 学习笔记)Java.SE.第004讲.运算符.Operator
- Java学习笔记---12.面向对象编程07-Java中的static关键字用法
- Java学习笔记:运算符
- java学习笔记四——运算符
- java基础学习笔记第三天 this . static 的用法和值传递,引用传递