instanceof是Java的一个二元操作符,和==,>,<是同一类东西。由于它是由字母组成的,所以也是Java的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据。举个例子: String s = "I AM an Object!"; boolean isObject = s instanceof Object; 我们声明了一个String对象引用,指向一个String对象,然后用instanceof来测试它所指向的对象是否是Object类的一个实例,显然,这是真的,所以返回true,也就是isObject的值为true
String s = "I AM an Object!";
boolean isObject = s instanceof Object;
我们声明了一个String对象引用,指向一个String对象,然后用instanceof来测试它所指向的对象是否是Object类的一个实例,显然,这是真的,所以返回true,也就是isObject的值为true
ClassA可以是接口名、抽象类名、普通类名
它用来判断是否 实现了接口/继承了抽象类/是某个类的实例 。
一般在强制类型转换之前用这个语句进行判断,保证类型转换正确进行。
instanceof 是一个二元操作符,Java保留关键字。
使用方法:
objectname instanceof ClassName ,返回值为Boolean类型。
作用:
表示左面的对象是否是右面类的一个实例(从instanceof的字母义上也可以理解),如果是的话,返回true,否则返回false。
例子:
上面3楼的例子给的有点牵强。Object是很多类的基类,你用 ** instanceof Object一般要返回true了。
例一: String s="a String object";
Integer i=new Integer(4);
People p=new People();//People 是一个自定义的类
System.out.println(s instanceof String);
System.out.println(i instanceof Integer);
System.out.println(p instanceof People); 例二:instanceof常用的地方就是Object及其之类中equals()方法的重载。(这里就涉及到==和equals的不同,不多说了)
以下就是Java中Integer类中equals()方法的源代码: public boolean equals(Object obj) {
if (obj instanceof Integer) {
return value == ((Integer)obj).intValue();
}
return false;
}
//其基本思想就是,先判断两对象是不是同一类的实例,然后再判断两对象对应的所有属性值是否相等。