跳到主要内容

Java instanceof 运算符

提示
  1. 基本用途instanceof 运算符在 Java 中用于检测一个对象是否是特定类的实例。
  2. 继承中的应用instanceof 可以用来判断一个对象是否为其超类或子类的实例。
  3. 接口实现检查instanceof 也用于确认一个对象是否实现了某个接口。

Java 中的 instanceof 运算符用于检查一个对象是否是特定类的实例。

其语法为

objectName instanceof className;

这里,如果 objectNameclassName 的实例,则运算符返回 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 运算符检查 nameobj 是否分别是 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

这里,d1Dog 类的一个实例。instanceof 运算符检查 d1 是否也是接口 Animal 的一个实例。

注意:在 Java 中,所有的类都继承自 Object 类。所以,所有类的实例也是 Object 类的实例。

在前面的示例中,如果我们检查,

d1 instanceof Object

结果将是 true