网站首页 > 资源文章 正文
instanceof关键字虽然没有final、static这些关键字用的多,但是也是非常重要的,尤其是面试。因此花了一些时间整理了一下。
一、认识instanceof关键字
其实instanceof就是一个操作符,语法形式很简单:
A通常是引用变量,B通常是一个类或者是接口,表示的含义有三个:
(1)A是否是B的实例,
(2)A是否是B子类的实例
(3)A是否是B接口实现类的实例
也就是说我们平时使用instanceof关键字一般作为判断左右两侧是否有继承或者是实现关系。带着上面的问题,下面我们就具体看看如何去使用这个关键字。
二、使用instanceof关键字
为了表述上面三个含义,我们先给出一个继承关系图,然后去实现。
上面这张类图继承关系已经很明确了,我们用代码看一下:
二、代码验证
首先我们给出其继承关系的代码
然后给出其测试方法,分别测试几个类。
在这里我们对四个类进行了测试。下面我们输出一下结果:
(1)Human是谁的实例呢?
在文章一开始我们已经给出,Human其实是一个根类,没有继承任何父类,也没有实现任何接口。所以他的输出也很简单
他自己只能是自己的实例了。
(2)Man是谁的实例?
Man继承了Human,实现了Play接口,因此他是Human的实例,同时也是Play接口的实例。
(3)Soldier是谁的实例?
Soldier继承了Man类,但是这里却没有实现Play接口,我们先看一下输出吧。
也就是说,父亲有的儿子也有,父类实现的接口,子类也默认实现了。
(4)Woman是谁的实例?
如果你理解了上面的Man,那么Woman你应该能够理解,Woman只继承了Human类,所以他应该有两个,一个是Human的实例,一个是自己的实例
三、总结
instanceof关键字用起来还是比较简单的,还记得我们在文章一开始提出的三个含义嘛?现在我们给其解答一下:
(1)A是A本身的实例,
(2)A是A父类(或者是父类的父类)的实例
(3)A是A接口(或者是父类的接口)的实例
既然instanceof是一个关键字,那说明jvm虚拟机能够正确的识别这个java指令。那么jvm如何去识别呢?,
instanceof的指令格式是:instanceof|indexbyte1|indexbyte2。
指令执行前后的栈顶状态:objectref=>。。。
indexbyte1和indexbyte2用于构造对当前类的常量池的索引,objectref为reference类型,可以是某个类,数组的实例或者是接口。在实现instanceof指令的时候,首先是对indexbyte1和indexbyte2构造的常量池索引进行解析,然后根据java规范判断解析的类是不是objectref的一个实例,最后在栈顶写入结果。
这一段看不懂没关系,这是在jvm的操作,一般面试的时候要是问道,你只要把其如何使用搞清楚就好了,非要显得牛逼一点,那就看看instanceof指令在jvm是如何实现的就好。
猜你喜欢
- 2024-10-08 instance substance circumstance
- 2024-10-08 百度二面:你了解instanceof原理吗?
- 2024-10-08 「JS很简单」JavaScript 基础之 instanceof操作符
- 2024-10-08 Java程序设计-向下转型、instanceof(笔记)
- 2024-10-08 谷歌Chrome浏览器开放Instance Switcher功能
- 2024-10-08 深入了解,Python 中 type 和 isinstance 的用法
- 2024-10-08 性能高、上手快,实体类转换工具 MapStruct 到底有多强大
- 2024-10-08 为什么使用instanceof判断数组并不准确
- 2024-10-08 讲解python中assert、isinstance的用法,这个思维方式能理解吗?
- 2024-10-08 今天我们就来搞懂call()源码instanceof源码和类型转换
你 发表评论:
欢迎- 最近发表
-
- UG10.0UG12.0教程,共63章节,送给那些正在自学UG编程的朋友
- UG产品图档下载,连筋薄板,外形铣、孔铣都要用
- 天正建筑 T30V1.0 下载安装教程(支持CAD2025)
- 教你如何开启UG NX12.0设置保护加密(文件密码)
- UG NX 8.5 安装教程,安装过程就是这么简单
- ug安装教程详细步骤ug怎么免费安装教程ug软件怎样安装步骤
- UG/NX安装失败,如何才能彻底删除(卸载)UG/NX?6步就能解决
- UG8.5 正式版安装方法(ug8.8安装)
- ug12.0版安装教程与安装包免费下载 #ug安装
- China-EU 50 years: Advancing stability and prosperity through partnership
- 标签列表
-
- 电脑显示器花屏 (79)
- 403 forbidden (65)
- linux怎么查看系统版本 (54)
- 补码运算 (63)
- 缓存服务器 (61)
- 定时重启 (59)
- plsql developer (73)
- 对话框打开时命令无法执行 (61)
- excel数据透视表 (72)
- oracle认证 (56)
- 网页不能复制 (84)
- photoshop外挂滤镜 (58)
- 网页无法复制粘贴 (55)
- vmware workstation 7 1 3 (78)
- jdk 64位下载 (65)
- phpstudy 2013 (66)
- 卡通形象生成 (55)
- psd模板免费下载 (67)
- shift (58)
- localhost打不开 (58)
- 检测代理服务器设置 (55)
- frequency (66)
- indesign教程 (55)
- 运行命令大全 (61)
- ping exe (64)
本文暂时没有评论,来添加一个吧(●'◡'●)