instanceof 操作符与对象和 Java 的类型系统联系紧密。建议对Java有充分了解后,再学instanceof操作符会更好一些。
instanceof 操作符的左侧操作数是对象或数组,右侧操作数是引用类型的名称。如果对象或数组是指定类型的实例,计算结果为 true;否则,计算结果为 false。如果左侧操作数是 null,instanceof 操作符的计算结果始终为 false。如果 instanceof 表达式的计算结果为 true,意味着可以放心校正并把左侧操作数赋值给类型为右侧操作数的变量。
instanceof 操作符只能用于引用类型和对象,不能用于基本类型和值。instanceof 操作符的使用示例如下:
// true: 所有字符串都是String类的实例
"string" instanceof String
// true: 字符串也是Object类的实例
"" instanceof Object
// false:null不是任何类的实例
null instanceof String
Object o = new int[] {1,2,3};
o instanceof int[] // true:这个数组是int数组
o instanceof byte[] // false:这个数组不是byte数组
o instanceof Object // true:所有数组都是Object类的实例
// 使用instanceof确保能放心校正对象
if (object instanceof Point) {
Point p = (Point) object;
}