java中instanceof使用详细介绍

instanceof是Java语言中的一个二元运算符,它的作用是:判断一个引用类型变量所指向的对象是否是一个类(或接口、抽象类、父类)的实例,即它左边的对象是否是它右边的类的实例,该运算符返回boolean类型的数据。

boolean result = obj instanceof Class

其中obj为一个对象,Class表示一个类或者一个接口,当obj为Class的对象,或者是其直接或者间接子类,或者是接口的实现类,结果result 都返回true,否则返回false。

注意:编译器会检查 obj 是否能转换成右边的class类型,如果不能转换则直接报错,如果不能确定类型,则通过编译,具体看运行时定。

 

2、instanceof 应用

1.  其中obj 必须为引用类型,不能是基本类型,instanceof 运算符只能用作对象的判断。

 

2.  当obj为null

一般我们知道java分为两种数据类型,一种是基本数据类型,有8个:byte、short、int、long、float、double、char、boolean,一种引用类型,包括类,接口,数组等等。而java中还有一种特殊的null类型,该类型没有名字,所以不能声明为null类型的变量或者转换为null,null引用是null类型表示式唯一可能的值,null引用也可以转换为任意引用类型。在JavaSE规范中对instanceof 运算符的规定就是:如果obj为null,返回false。

 

 

3.  obj为class 类的实例对象

 

4.  obj为Class接口的实现类

了解java集合,我们知道集合中有一个上层接口List,其中有个典型的实现类 ArrayList

 

所以我们可以用instanceof 运算符判断某个对象是否是List 接口的实现类,如果是返回true,否则返回false。

或者反过来也是true

 

 

5.  obj为class 类的直接或者间接子类

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/270448.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

javaWEB总结(9):自定义HttpServlet

前言:我们知道 MyHttpServlet是MyGenericServlet的子类,MyHttpServlet会继承父类的方法,可是却很少去追问MyHttpServlet中的doGet方法和doPost方法是如何进行判断的,本文主要做一个小例子,进一步理解HttpServlet。有些代码前文多次…

硬件知识:u-boot和bootloader的区别

目录 1、Bootloader 2、uboot 2.1.硬件管理 2.2.能够完成镜像烧录(刷机) 2.3.uboot的“生命周期” 2.4.uboot要提供命令式shell界面 3、bootloader 与 uboot的区别 嵌入式软件工程师听说过 u-boot 和 bootloader,但很多工程师依然不知道他们到…

Java中局部变量必须初始化

Java中有两种变量,局部变量和成员变量。 成员变量可以不进行初始化,虚拟机也会确保它有一个默认的值。 局部变量不能这样做,我们必须对它进行赋值,才能使用它。

php 直播服务器搭建,基于Nginx搭建RTMP/HLS视频直播服务器

1、Nginx环境搭建(基于lnmp环境)//下载并安装lnmp环境wget -c http://soft.vpser.net/lnmp/lnmp1.3.tar.gz && tar zxf lnmp1.3.tar.gz && cd lnmp1.3 && ./install.sh lnmp安装完成安装完成后访问服务器地址会出现如下界面lnmpPS:安装时生…

办公:office办公软件Excel表格的打印技巧

很多新手使用办公软件过程中,对于Excel的打印出现了诸多问题,今天我们就一起来看看表格打印的几个技巧! 打印预览时网格线怎么不见了? 如何调整打印区域的页边距? 如何设置单色打印? ...... 这些打印时遇到…

vuejs 中如何优雅的获取 Input 值

http://www.sunzhongwei.com/how-to-get-input-value-in-vuejs转载于:https://www.cnblogs.com/benpaodexiaopangzi/p/6093275.html

线程池和线程详细教程

1. 线程池的概念: 线程池就是首先创建一些线程,它们的集合称为线程池。使用线程池可以很好地提高性能,线程池在系统启动时即创建大量空闲的线程,程序将一个任务传给线程池,线程池就会启动一条线程来执行这个任务&#…

虚拟主机 php .htacess,LiteSpeed添加虚拟主机+支持htaccess图文教程

上次给大家简单介绍了Debian下手动安装LiteSpeedMySQLPHP的教程(点击查看),但是这个教程还没完,想要使用litespeed还要进入后台进行设置,包括添加虚拟主机和.htaccess伪静态的支持,本文就继续这个话题给大家详细做个图文教程吧~为…

前端:uniapp封装组件用法笔记

大家在做前端项目开发的时候,经常会遇到公用的一些页面,比如搜索、列表、商品详情卡片、评论列表等。为了提高开发效率、使代码看起来更加简洁,这个时候封装相应的组件是最好的解决方案。今天小编给大家介绍一下如何在uniapp中封装组件&#…

Angular的工作原理

首先上一小段代码&#xff08;index.html&#xff09;&#xff0c;结合代码我们来看看&#xff0c;angular一步一步都做了些什么。 <!doctype html> <html ng-app><head><script src"angular.js"></script></head><body>&…

php中等腰金字塔挖空,php 用for循環做,金字塔,菱形,空三角

echo "金字塔 style1";for($i1;$i<9;$i){for($k0;$kecho "*";}echo "";}echo "金字塔 style2";for($c5;$c>0;$c--){for($c10;$c1echo "*";}echo "";}echo "金字塔 style3";for($a0;$a<11;$a){…

网络知识:四个网络命令ping、arp、tracert、route的用法介绍

网络相关的从业人员&#xff0c;都需要面对检测和解决网络故障的各种问题&#xff0c;实际案例中因为网络导致的故障也是最多的&#xff0c;今天我们和大家一起来学习一下解决网络故障时使用最多的四个网络命令。希望对大家以后的实际工作中的故障排除起到作用。 1、Ping命令的…

jQuery掷骰子

网上找的jQuery掷骰子效果&#xff0c;测试兼容IE7及以上浏览器&#xff0c;IE6没有测试 js代码如下&#xff1a; 1 $(function(){2 var dice $("#dice");3 dice.click(function(){4 $(".wrap").append("<div iddice_mask><…

电脑知识:台式电脑如何使用无线网上网

❤️作者主页&#xff1a;IT技术分享社区 ❤️作者简介&#xff1a;大家好,我是IT技术分享社区的博主&#xff0c;从事C#、Java开发九年&#xff0c;对数据库、C#、Java、前端、运维、电脑技巧等经验丰富。 ❤️个人荣誉&#xff1a; 数据库领域优质创作者&#x1f3c6;&#x…

oracle的function的语法,Oracle function语法

2018-3-30 遇到需要使用SQL方法拼接字符串的情况&#xff0c;就研究了一下SQL简单的方法应用--定义入参数[参数名 in 参数类型]create or replace function p_gettype(se_type in varchar2)--定义返回类型return varchar2isv_calling_type varchar2(45);v_called_type varchar2…

进程动态优先级调度

简单的进程优先级动态调度 cup运行&#xff1a; 每执行一次&#xff0c;优先级减一&#xff0c;运行时间减一。 就绪队列中的进程&#xff1a;每次按优先级降序排序&#xff08;优先级越大越优先执行&#xff09;&#xff0c;若优先级相等再按时间升序排序&#xff08;时间越小…

电脑维修:如何给笔记本电脑升级内存条

❤️作者主页&#xff1a;IT技术分享社区 ❤️作者简介&#xff1a;大家好,我是IT技术分享社区的博主&#xff0c;从事C#、Java开发九年&#xff0c;对数据库、C#、Java、前端、运维、电脑技巧等经验丰富。 ❤️个人荣誉&#xff1a; 数据库领域优质创作者&#x1f3c6;&#x…

php动态添加查询,php动态添加url查询参数的方法,php动态url参数_PHP教程

php动态添加url查询参数的方法&#xff0c;php动态url参数本文实例讲述了php动态添加url查询参数的方法。分享给大家供大家参考。具体分析如下&#xff1a;这段代码可以动态为url添加key-value查询参数&#xff0c;如果参数已经存在则会用新的进行覆盖function add_querystring…

Object o = new Object()在内存中占几个字节

CAS&#xff1a; Compare and Swap&#xff0c;即比较再交换。 jdk5增加了并发包java.util.concurrent.*,其下面的类使用CAS算法实现了区别于synchronouse同步锁的一种乐观锁。JDK 5之前Java语言是靠synchronized关键字保证同步的&#xff0c;这是一种独占锁&#xff0c;也是…