Contents

参考:《改善java程序的151个建议》

  • instanceof是Java的一个二元操作符,和==,>,<类似

  • 它的作用是用于判断一个引用类型变量所指向的对象是否是一个类(或接口、抽象类、父类)的实例。

  • 左右两个操作数有继承或实现关系

  • Instanceof只能用于对象的判断,不能用于基本类型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//编译通过
//String继承了Object,
//返回true
boolean b1 = "String" instanceof Object;
//编译通过
//一个类的对象当然是他的实例
//返回true
boolean b2 = new String() instanceof String;
//编译通过,因为左右两个操作数有继承或实现关系
//Object是父类,其对象当然不是String的实例
//返回false
boolean b3 = new Object() instanceof String;
//编译失败,'A'是基本类型,不是一个对象,instanceof只能用于对象的判断
boolean b4 = 'A' instanceof Character;
//编译通过
//instanceof特有的规则,若左操作数为null,结果直接为false
//返回false
boolean b5 = null instanceof String;
//同上
boolean b6 = (String)null instanceof String;
//编译失败,因为Date类和String类没有继承或实现关系
boolean b7 = new Date() instanceof String;
Contents