Java 实例 - instanceOf 关键字用法

Java 实例

instanceof是Java的一个二元操作符,类似于 ==,>,

java instanceof 运算符用于测试对象是否是指定类型(类或子类或接口)的实例。

Java 中的 instanceof 也称为类型比较运算符,因为它将实例与类型进行比较。返回 true 或 false。如果我们将 instanceof 运算符应用于任何具有空值的变量,它会返回 false。

instanceof的简单例子

public class Simple1{  
    public static void main(String args[]){  
        Simple1 s=new Simple1();  
        System.out.println(s instanceof Simple1);//true  
    }  
}

以上代码运行输出结果为:

true

子类类型的对象也是父类的一种类型。

例如,如果 Dog 扩展了 Animal,那么 Dog 的对象可以被 Dog 或 Animal 类引用。

instanceof运算符的另一种使用

public  class Animal{}  
    public  class Dog1 extends Animal{
    public static void main(String args[]){  
        Dog1 d=new Dog1();  
        System.out.println(d instanceof Animal);//true  
    }  
}  

以上代码运行输出结果为:

true

instanceof带有一个具有空值的变量

让我们看看下面给出的示例,其中我们将 instanceof 运算符应用于具有空值的变量。

public class Dog{  
    public static void main(String args[]){  
        Dog d=null;  
        System.out.println(d instanceof Dog); 
    }  
} 

以上代码运行输出结果为:

false

如果我们对具有空值的变量应用 instanceof 运算符,它会返回 false。

使用 java instanceof 运算符进行向下转换

当子类类型引用父类的对象时,称为向下转型。

如直接执行,编译器会 Compilation error。如果通过类型转换执行,则会抛出 ClassCastException。但是我们使用 instanceof 运算符,向下转型是可能的。

public class Animal { }  
public class Dog extends Animal {  
    public static void method(Animal a) {  
        if(a instanceof Dog){
            Dog d=(Dog)a;//向下转型 
            System.out.println("向下转换执行成功");  
        }  
    }  
    public static void main (String [] args) {  
        Animal a=new Dog();  
        Dog.method(a);  
    }
}