Java instanceof 运算符
提示
- 基本用途:
instanceof
运算符在 Java 中用于检测一个对象是否是特定类的实例。 - 继承中的应用:
instanceof
可以用来判断一个对象是否为其超类或子类的实例。 - 接口实现检查:
instanceof
也用于确认一个对象是否实现了某个接口。
Java 中的 instanceof
运算符用于检查一个对象是否是特定类的实例。
其语法为
objectName instanceof className;
这里,如果 objectName
是 className
的实例,则运算符返回 true
。否则,返回 false
。
示例:Java 中的 instanceof
class Main {
public static void main(String[] args) {
// 创建一个字符串类型的变量
String name = "mashangxue123";
// 检查 name 是否是 String 的实例
boolean result1 = name instanceof String;
System.out.println("name 是 String 的一个实例: " + result1);
// 创建一个 Main 的对象
Main obj = new Main();
// 检查 obj 是否是 Main 的实例
boolean result2 = obj instanceof Main;
System.out.println("obj 是 Main 的一个实例: " + result2);
}
}
输出
name 是 String 的一个实例: true
obj 是 Main 的一个实例: true
在上面的示例中,我们创建了一个 String
类型的变量 name
和一个 Main
类的对象 obj
。
这里,我们使用 instanceof
运算符检查 name
和 obj
是否分别是 String
类和 Main
类的实例。在这两种情况下,运算符都返回 true
。
注意:在 Java 中,String
是一个类而不是原始数据类型。要了解更多,请访问 Java String。
Java 中继承时的 instanceof
我们可以使用 instanceof
运算符检查子类的对象是否也是超类的实例。例如,
// Java 程序检查子类的对象
// 是否也是超类的实例
// 超类
class Animal {
}
// 子类
class Dog extends Animal {
}
class Main {
public static void main(String[] args) {
// 创建一个子类的对象
Dog d1 = new Dog();
// 检查 d1 是否是子类的实例
System.out.println(d1 instanceof Dog); // 输出 true
// 检查 d1 是否是超类的实例
System.out.println(d1 instanceof Animal); // 输出 true
}
}
在上面的示例中,我们创建了一个从超类 Animal
继承的子类 Dog
。我们创建了一个 Dog
类的对象 d1
。
在打印语句中,注意表达式,
d1 instanceof Animal
这里,我们使用 instanceof
运算符检查 d1
是否也是超类 Animal
的实例。
Java 中接口的 instanceof
instanceof
运算符还用于检查一个类的对象是否也是该类实现的接口的实例。例如,
// Java 程序检查一个类的对象是否也是
// 该类实现的接口的实例
interface Animal {
}
class Dog implements Animal {
}
class Main {
public static void main(String[] args) {
// 创建一个 Dog 类的对象
Dog d1 = new Dog();
// 检查 Dog 的对象
// 是否也是 Animal 的 实例
System.out.println(d1 instanceof Animal); // 返回 true
}
}
在上面的示例中,Dog
类实现了 Animal
接口。在打印语句中,注意表达式,
d1 instanceof Animal
这里,d1
是 Dog
类的一个实例。instanceof
运算符检查 d1
是否也是接口 Animal
的一个实例。
注意:在 Java 中,所有的类都继承自 Object
类。所以,所有类的实例也是 Object
类的实例。
在前面的示例中,如果我们检查,
d1 instanceof Object
结果将是 true
。