软件下载

java instanceof用法(Java语言instanceof运算符用法详解)

软件下载 投稿 2022-06-28 16:07:55 浏览

Java语言当中提供了一个叫做instanceof的运算符。很多教科书上对这个运算符的介绍并不详细,只是简单的说这个运算符是用来判断某个对象是不是属于某种类型。我们现在就用一篇短文介绍一下instanceof的运算符的作用和注意事项。请看下面的代码片段

Java语言instanceof运算符用法详解

 

代码中定义了一个接口和两个类。大家记清楚它们之间的关系:Person类实现了Moveable接口,Student类继承了Person类。紧接着我们来看下面的代码

Java语言instanceof运算符用法详解

 

在代码中,我们创建了一些对象,并且使用instanceof运算符判断某个对象是否属于某种类型。请问程序的输出结果会是什么呢?公布一下答案:全部输出true!有读者可能不解为什么会是这样的输出结果?比如标号为⑥的那行代码,明明p2是Person类的对象,而Person类是Student的父类,为什么虚拟机会认为p2是Student类的对象呢?

为了弄清楚这个问题,我们必须搞清楚instanceof运算符的判断依据。instanceof运算符在判断的过程中,看的是引用实际指向的对象 (而不是看引用自身的类型)是不是可以被认定为属于某种类型。如果可以被认定为属于这种类型,那么运算结果为true;反之,如果假设不成立或未必成立,则运算结果为false。比如说,p2虽然是Person类型的,但它实际指向了一个Student类型的对象,所以p2肯定属于Student类型,因此输出结果为true。

其实我们可以用一种比较简单的方法来理解输出结果,那就是用一个自问句式来判断:一个a是一个A吗?比如说,p2实际指向的是一个Student类型的对象,而代码中出现了” p2 instanceof Person”(见标号为④的代码),我们就可以自问一下:一个Student(学生,既p2指向的那个对象)是一个Person(人)吗?一个学生当然是一个人,所以这句自问的答案肯定是true。反过来,如果代码被写成” p1 instanceof Student”, p1实际指向的是一个Person类的对象,我们再来分析一下运算结果,也可以采用这种自问的形式:一个Person(人)是一个Student(学生)吗?一个人未必是一个学生,所以这种假设并不一定成立,因此判断的结果为false。

我想,讲到这里,读者已经知道instanceof运算符的判断依据了吧?那么,在使用这个运算符的过程中,要注意哪些事项呢?归纳一下可以总结出两点:

1、instanceof左边必须是引用数据类型,而它右边一定是类或者接口的名称,不能是基础数据类型的名称。比如”1 instanceof int”或者” 1 instanceof Integer”这样的写法都是错误的。

2、如果instanceof左边的引用指向的是一个空对象(null),那么无论instanceof右边无论是什么类型,运算结果肯定是false。

「真诚赞赏,手留余香」

求资源网

真诚赞赏,手留余香

使用微信扫描二维码完成支付

继续浏览有关编程的文章
发表评论
留言与评论(共有 0 条评论)
   
验证码:
版权声明

求资源网所发布的一切破解补丁,软件,以及其他分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途。
否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。