Skip to content

Java instanceof 运算符

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

它的语法是

objectName instanceOf className;

在这里,如果 objectNameclassName 的实例,运算符返回 true。否则,返回 false


示例:Java instanceof

class Main {

  public static void main(String[] args) {

    // 创建一个字符串类型的变量
    String name = "Programiz";
    
    // 检查 name 是否是 String 的实例
    boolean result1 = name instanceof String;
    System.out.println("name is an instance of String: " + result1);

    // 创建一个 Main 类的对象
    Main obj = new Main();

    // 检查 obj 是否是 Main 的实例
    boolean result2 = obj instanceof Main;
    System.out.println("obj is an instance of Main: " + result2);
  }
}

输出

name is an instance of String: true
obj is an instance of Main: true

在上面的示例中,我们创建了一个 String 类型的变量 name 和一个 Main 类的对象 obj

在这里,我们使用了 instanceof 运算符来检查 nameobj 是否分别是 StringMain 类的实例。在两种情况下,运算符都返回 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