CodeGym /课程 /Java 核心 /instanceof 运算符

instanceof 运算符

Java 核心
第 4 级, 课程 1
可用

“你好,阿米戈!你可能已经见过了 instanceof 运算符。今天我会讲解它的使用方式和使用位置。instanceof 是一个很简单又高效的运算符。”

“听起来像不像打广告?”

“它真的是非常简单。就比如这样:对象 instanceof 类。”

它可检查对象是否是特定类的实例。但是好用不好说。请看以下示例:

代码 说明
Object o = new Integer(3);
boolean isInt = o instanceof Integer;
isInt 将为 true。变量 o 引用的对象是 Integer 类的实例。
Object o = "Mama";
boolean isInt = o instanceof Integer;
isInt 将为 false。变量 o 引用的对象不是 Integer 类的实例。它是一个 String 对象。
InputStream is = new FileInputStream("");
boolean isFIS = is instanceof FileInputStream;
isFIS 将为 true。变量 o 引用的对象是 FileInputStream 类的实例。
4
任务
Java 核心, 第 4 级, 课程 1
已锁定
Code entry
Sometimes you don't need to think, you just need to hammer it out! As paradoxical as it may seem, sometimes your fingers will "remember" better than your conscious mind. That's why while training at the secret CodeGym center you will sometimes encounter tasks that require you to enter code. By entering code, you get used to the syntax and assimilate some material. What's more, you combat laziness.

“对,那个真的非常简单。

“这个运算符还考虑了继承。我们看看。”

代码 说明
class Animal
{
}
class Cat extends Animal
{
}
class Tiger extends Cat
{
}
这里有三个类声明:Animal、Cat 和 Tiger。Cat 继承 Animal。Tiger 继承 Cat。
Object o = new Tiger();
boolean isCat = o instanceof Cat;
boolean isTiger = o instanceof Tiger;
boolean isAnimal = o instanceof Animal;
isCat 将为 true。
isTiger 将为 true。
isAnimal 将为 true。
Object o = new Animal();
boolean isCat = o instanceof Cat;
boolean isTiger = o instanceof Tiger;
boolean isAnimal = o instanceof Animal;
isCat  将为 false。
isTiger 将为 false。
isAnimal 将为 true。

甚至接口:

代码 说明
interface Moveable
{
}
class Cat
{
}
class TomCat extends Cat implements Moveable
{
}
创建两个类:Cat、TomCat 以及 Moveable 接口
Cat o = new TomCat();
boolean isCat = o instanceof Cat;
boolean isMoveable = o instanceof Moveable;
boolean isTom = o instanceof TomCat;
isCat 将为 true。
isMoveable 将为 true。
isTom 将为 true。
Cat o = new Cat();
boolean isCat = o instanceof Cat;
boolean isMoveable = o instanceof Moveable;
boolean isTom = o instanceof TomCat;
isCat 将为 true。
isMoveable 将为 false。
isTom 将为 false。

instanceof 运算符类似于:a instanceof B。

换句话说,instanceof 运算符在如下条件下返回 true:

1) 变量 a 存储 B 类型对象的引用

2) 变量 a 存储类继承 B 的对象的引用

3) 变量 a 存储实现接口 B 的对象的引用

否则,instanceof 运算符会返回 false。

“明白了。所以为什么这个必不可少呢,里希叔叔?”

“艾丽会告诉你。这是一个非常好用的运算符。今天你就会相信这一点。”

评论 (3)
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION
哄哄 级别 3,Nanping,China
7 十二月 2024
instanceof 运算符
micro 级别 2,China,China
7 六月 2023
谢谢你,里希。
Super Ego 级别 14,Wu Han,China
15 三月 2023
打卡