Java 实例 - instanceOf 关键字用法
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);
}
}