1、Java instanceof 关键字语法知识点及案例代码
Java instanceof 关键字语法知识点
instanceof
是 Java 中的一个关键字,用于测试一个对象是否是一个特定类的实例,或者是这个类的子类的实例。它返回一个布尔值,常用于类型检查和类型转换之前,以避免 ClassCastException
。
语法格式:
result = object instanceof className;
object
:要进行类型检查的对象。className
:要检查的类名或接口名。result
:返回一个布尔值,如果object
是className
类的实例或其子类的实例,则返回true
,否则返回false
。
注意事项:
instanceof
运算符只适用于对象类型,不适用于原始数据类型(如int
、double
等)。instanceof
运算符用于在运行时判断对象的类型,因此通常比较耗时,应尽量避免频繁使用。null
用instanceof
跟任何类型比较时,总是返回false
。instanceof
运算符不能用于确定一个对象是否是某个类的子类,但它可以用于检查一个对象是否实现了某个接口。
案例代码
案例1:基本用法
class Animal {
void makeSound() {
System.out.println("Some sound");
}
}
class Dog extends Animal {
void bark() {
System.out.println("Woof");
}
}
public class InstanceOfExample {
public static void main(String[] args) {
Animal myAnimal = new Dog();
if (myAnimal instanceof Dog) {
Dog myDog = (Dog) myAnimal;
myDog.bark();
}
}
}
在这个例子中,myAnimal
是 Dog
的一个实例。在将 myAnimal
转换为 Dog
类型之前,使用 instanceof
检查它是否是 Dog
的实例。
案例2:多态和处理不同类型的对象
class Shape {
void draw() {
System.out.println("Drawing a shape");
}
}
class Circle extends Shape {
void draw() {
System.out.println("Drawing a circle");
}
}
class Square extends Shape {
void draw() {
System.out.println("Drawing a square");
}
}
public class InstanceOfExample2 {
public static void main(String[] args) {
Shape[] shapes = {
new Circle(), new Square(), new Shape()};
for (Shape shape : shapes) {