instanceof运算符的前一个操作数通常是一个引用类型的变量,后一个操作符通常是一个类(也可以是接口),它用于判断前面的对象是否是后面的类,或者子类、实现类的实例。如果是,则返回true,否则返回false。
在使用instanceof运算符时需要注意:instanceof运算符前面操作数的编译时的类型要么与后面的类相同,要么是后面类的父类,否则编译错误。给个示例代码- public static void main(String[] args)
- {
- //声明hello使用Object类,Object是所有类的父类,但hello变量的实际类型是String
- Object hello = "hello";
- //String是Object的子类,所以返回true
- System.out.println("字符串是否是Object类的实例:"+(hello instanceof Object)); //true
- System.out.println("字符串是否是String类的实例:"+(hello instanceof String)); //true
- //Math是Object的子类,所以返回false
- System.out.println("字符串是否是Math类的实例:"+(hello instanceof Math)); //false
- //String实现了Comparable接口,返回true
- System.out.println("字符串是否是Comparable接口:"+(hello instanceof Comparable)); //true
- String a = "hello";
- //String类既不是Math类,也不是Math父类,下面代码编译出错
- //System.out.println("字符串是否是Math类的实例:"+(a instanceof Math)); //false
- }
- }
复制代码 instanceof运算符的作用是在执行强制类型转换之前,首先判断前一个对象是否是后一个类的实例,是否可以成功的转换,从而保证代码更加健壮。 |