【java基础】Java中instanceof关键字的理解

java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。

用法: 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。

例子:

接口Person

public interface Person { public void eat(); }

实现类People

public class People implements Person { private int a=0; @Override public void eat() { System.out.println("======"+a); }

}

子类xiaoming:

public class xiaoming extends People { private String name;

@Override public void eat() { System.out.println("+++++++++"); } }

主函数

public static void main(String[] args) { People p=new People(); xiaoming x=new xiaoming(); System.out.println(p instanceof Person); System.out.println(p instanceof xiaoming); -----2 System.out.println(x instanceof Person); System.out.println(x instanceof People); }

注意:上面2处的代码在编译时不会报错。

运行结果:

true false true true

修改自:http://www.jb51.net/article/106795.htm

原文发布于微信公众号 - 程序员互动联盟(coder_online)

原文发表时间:2018-02-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏salesforce零基础学习

salesforce 零基础学习(三十一)关于LookUp字段点击Save时的Validation

今天在群里大概遇到了这样一个问题,明明这个User存在,但是save的时候提示信息说Value不存在,大概的意思如下图所示,目前认为这种问题常见的可能情况有两种...

18510
来自专栏深度学习思考者

C++常见问题系列(一)——基础问题

一 三种基本数据类型 整数型,浮点型和void型;其中表示整数、字符和布尔值的算术类型合称为整形。 二 操作符 操作符说明了表达式的主要目的,并且计...

1829
来自专栏Golang语言社区

Golang语言--变量作用域

作用域为已声明标识符所表示的常量、类型、变量、函数或包在源代码中的作用范围。 Go 语言中变量可以在三个地方声明: 函数内定义的变量称为局部变量 函数外定义的变...

3246
来自专栏Hongten

python开发_counter()

614
来自专栏Petrichor的专栏

python: bisect库

851
来自专栏练小习的专栏

条件注释

下面是条件注释的语法 gt /Greater than/大于/<!--[if gt IE 5.5]> gte /Greater than or equal t...

17110
来自专栏PHP技术

PHP函数

请点击上面蓝色PHP关注 你知道这些简单的函数中的方法吗? count() 函数计算数组中的单元数目或对象中的属性个数。 对于数组,返回其元素的个数,对于其他值...

2715
来自专栏java一日一条

你需要理解的 Java 反射机制知识总结

在面向对象的世界里,万物皆对象。类是对象,类是java.lang.Class类的实例对象。另外class类只有java虚拟机才能new出来。任何一个类都是Cla...

612
来自专栏青枫的专栏

多态的两道练习题

701
来自专栏李家的小酒馆

C# 通过反射初探ORM框架的实现原理

  以前学的Java进行开发,多用到Mybatis,Hiberante等ORM框架,最近需要上手一个C#的项目,由于不是特别难,也不想再去学习C#的ORM框架,...

20210

扫码关注云+社区