/**
* 任务:使用 instanceof 运算符判断指定对象是否为特定类的一个实例
*/
class Person{}
class Students extends Person{}
class Sch extends Students{}
public class Demos{
public static void main(String[] args) {
// 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
/********* Begin *********/
// 创建一个Students对象,判断该对象是否是Person类的实例
//如果是输出:true,否则为false
Students s=new Students();
boolean result = s instanceof Person;
System.out.println(result);
// 创建一个Sch对象,判断该对象是否是Person类的实例
// 输出判断结果
Sch sch =new Sch();
boolean result2 = sch instanceof Person;
System.out.println(result2);
// 创建一个Person对象,判断该对象是否是Students类的实例
// 输出判断结果
Person p =new Person();
boolean result3 = p instanceof Students;
System.out.println(result3);
/********** End **********/
}
}
boolean result2 = Sch(不应该用Sch,应该用创建的sch) instanceof Person;
Sch sch =new Sch();//不要再忘记括号了!
instanceof 运算符
Java 中的 instanceof 运算符是用来在运行时判断对象是否是特定类的一个实例。instanceof 通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。
用法:
boolean result = Object instanceof Class;
名词介绍:
- result:布尔类型;
- Object:必选项。任意对象表达式;
- Class:必选项。任意已定义的对象类。 说明: 如果 Object 是 Class 的一个实例,则 instanceof 运算符返回 true;如果 Object 不是指定类的一个实例,或者 Object 是 null,则返回 false。
需要注意的是 instanceof 在 Java 的编译状态和运行状态是有区别的:
在编译状态中,Class 可以是 Object 对象的父类、自身类、子类。在这三种情况下 Java 编译时不会报错。
在运行转态中,Class 可以是 Object 对象的父类,自身类,不能是子类。在前两种情况下 result 的结果为 true,最后一种为 false。但是 class 为子类时编译不会报错,运行结果为 false。
例子:
class instanceOfDemo{ public static void main(String []args){ instanceOfDemo t=new instanceOfDemo(); if(t instanceof instanceOfDemo){ System.out.println("t是instanceOfDemo的实例"); } } }
执行结果:
t是instanceOfDemo的实例