java中 instanceof 关键字 作用 和 实际用途

2023-11-17

instanceof

  • 闲聊一下,所谓看书只看前三章,基础java决定上限。所以说基础很重要,Java也是基础扎实决定你的上限。

1. instanceof 是Java中的一个关键字,Java中的关键子都是小写。
2. instanceof关键字的作用是判断左边对象是否是右边类(这里有很多人说是对象,所以注意这里是类,并不是对象)的实例(通俗易懂的说就是:子类对象,或者右边类本身的对象)返回的boolean类型,true和false。

举个例子:

public class Dome{

	class Perse extends Object{}	
	class Student extends Perse{}

	//这个方法判断是否是Perse的实例,用instanceof判断。
	void f(Object o){//Object可以接收任何的类型。
	if(o instanceof Perse)
		System.out.println("你输入的对象是Perse的实例");
		else
		System.out.println("你输入的对象不是Perse的实例");

	public static void main(String[] args){
	Dome dome =new Doem();
	Perse perse =new Perse();
	Student student =new Student();
	Object object = new Object();
	dome.f(/*shutdent或者perse以及object*/);
	//结果:
	//输入的是student和perse那么instanceof 判断就会是true,if也就执行打印语句System.out.println("你输入的对象是Perse的实例");
	//那么输入object自然instanceof判断就是false。
	原因我们开头已经说的很清楚啦。
	//instanceof关键字的作用是判断左边对象是否是右边类的实例(通俗易懂的说就是:子类,或者右边类本身的对象)
	}
}

使用环境

public class CastingDemo{
	
		public static void displayObject(Object o){
			if(o instanceof Yuan){//判断是否为圆的对象,不是则往下执行判断else if
				System.out.println("圆的面积为:" + ((Yuan)o).mianJi);//这里(Yuan)Object)防止参数o是Yuan的子类,此方法获得面积。
			System.out.println("圆的直径为:" + ((Yuan)o).zhiJing);//此方法获得直径。
			}else if(o instanceof ChangFangXing{
				System.out.println("长方形的面积为:" + ((ChangFangXing)o));
			}
		}
			public static void main(String[ ] args){
			Object yuan =new Yuan(/*半径:*/ 1 );//Yuan是圆的对象,参数是半径,的出圆的面积和直径。详细类就不写啦,理解就行。
			Object changFangXing =new ChangFangXing(/*长宽:*/ 1,1);//ChangFangXing是长方形,参数是长和宽,的出面积
			//因为是静态方法并且在本类直接使用,省略 类名. 
			displayObject(yuan);
			displayObject(changFangXing);
		}
		
}
	

结果:圆的面积为:3.1415926
圆的直径为:2.0
长方形的面积为:1.0

这个样子的使用instanceof增加了代码的灵活性,如果你有更好的例子可以分享出来一起参考。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java中 instanceof 关键字 作用 和 实际用途 的相关文章

  • 按键时关闭 ModalWindow

    我希望能够在用户按下某个键 在我的例子中是 ESC 时关闭 ModalWindow 我有一个用于按键的 Javascript 侦听器 它调用取消按钮 ID 的单击事件 jQuery modalWindowInfo closeButtonId
  • Java中有没有一种方法可以通过名称实例化一个类?

    我正在寻找问题 从字符串名称实例化一个类 https stackoverflow com questions 9854900 instantiate an class from its string name它描述了如何在有名称的情况下实例
  • 如何将本机库链接到 IntelliJ 中的 jar?

    我正在尝试在 IntelliJ 中设置 OpenCV 但是我一直在弄清楚如何告诉 IntelliJ 在哪里可以找到本机库位置 在 Eclipse 中 添加 jar 后 您可以在 Build Config 屏幕中设置 Native 库的位置
  • 日期语句之间的 JPQL SELECT [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我想将此 SQL 语句转换为等效的 JPQL SELECT FROM events WHERE events date BETWE
  • Junit:如何测试从属性文件读取属性的方法

    嗨 我有课ReadProperty其中有一个方法ReadPropertyFile返回类型的Myclass从属性文件读取参数值并返回Myclass目的 我需要帮助来测试ReadPropertyFile方法与JUnit 如果可能的话使用模拟文件
  • 为什么 JTables 使 TableModel 在呈现时不可序列化?

    所以最近我正在开发一个工具 供我们配置某些应用程序 它不需要是什么真正令人敬畏的东西 只是一个具有一些 SQL 脚本生成功能并创建几个 XML 文件的基本工具 在此期间 我使用自己的 AbstractTableModel 实现创建了一系列
  • 动态选择端口号?

    在 Java 中 我需要获取端口号以在同一程序的多个实例之间进行通信 现在 我可以简单地选择一些固定的数字并使用它 但我想知道是否有一种方法可以动态选择端口号 这样我就不必打扰我的用户设置端口号 这是我的一个想法 其工作原理如下 有一个固定
  • Pig Udf 显示结果

    我是 Pig 的新手 我用 Java 编写了一个 udf 并且包含了一个 System out println 其中的声明 我必须知道在 Pig 中运行时该语句在哪里打印 假设你的UDF 扩展了 EvalFunc 您可以使用从返回的 Log
  • 谷歌应用程序引擎会话

    什么是java应用程序引擎 默认会话超时 如果我们将会话超时设置为非常非常长的时间 会不会产生不良影响 因为谷歌应用程序引擎会话默认情况下仅存储在数据存储中 就像facebook一样 每次访问该页面时 会话仍然永远存在 默认会话超时设置为
  • 来自 dll 的 Java 调用函数

    我有这个 python 脚本导入zkemkeeperdll 并连接到考勤设备 ZKTeco 这是我正在使用的脚本 from win32com client import Dispatch zk Dispatch zkemkeeper ZKE
  • 从最终实体获取根证书和中间证书

    作为密码学的菜鸟 我每天都会偶然发现一些简单的事情 今天只是那些日子之一 我想用 bouncy castle 库验证 java 中的 smime 消息 我想我几乎已经弄清楚了 但此时的问题是 PKIXparameters 对象的构建 假设我
  • 无法创建请求的服务[org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]-MySQL

    我是 Hibernate 的新手 我目前正在使用 Spring boot 框架并尝试通过 hibernate 创建数据库表 我知道以前也问过同样的问题 但我似乎无法根据我的环境找出如何修复错误 休眠配置文件
  • Eclipse Maven Spring 项目 - 错误

    I need help with an error which make me crazy I started to study Java EE and I am going through tutorial on youtube Ever
  • tomcat 中受密码保护的应用程序

    我正在使用 JSP Servlet 开发一个Web应用程序 并且我使用了Tomcat 7 0 33 as a web container 所以我的要求是tomcat中的每个应用程序都会password像受保护的manager applica
  • 获取文件的总大小(以字节为单位)[重复]

    这个问题在这里已经有答案了 可能的重复 java 高效获取文件大小 https stackoverflow com questions 116574 java get file size efficiently 我有一个名为 filenam
  • java for windows 中的文件图标叠加

    我正在尝试像 Tortoise SVN 或 Dropbox 一样在文件和文件夹上实现图标叠加 我在网上查了很多资料 但没有找到Java的解决方案 Can anyone help me with this 很抱歉确认您的担忧 但这无法在 Ja
  • 关键字“table”附近的语法不正确,无法提取结果集

    我使用 SQL Server 创建了一个项目 其中包含以下文件 UserDAO java public class UserDAO private static SessionFactory sessionFactory static se
  • Opencv Java 灰度

    我编写了以下程序 尝试从彩色转换为灰度 Mat newImage Imgcodecs imread q1 jpg Mat image new Mat new Size newImage cols newImage rows CvType C
  • 如何防止在Spring Boot单元测试中执行import.sql

    我的类路径中有一个 import sql 文件 其中包含一些 INSERT 语句 当使用 profile devel 运行我的应用程序时 它的数据被加载到 postgres 数据库中 到目前为止一切正常 当使用测试配置文件执行测试时 imp
  • Spring Rest 和 Jsonp

    我正在尝试让我的 Spring Rest 控制器返回jsonp但我没有快乐 如果我想返回 json 但我有返回的要求 完全相同的代码可以正常工作jsonp我添加了一个转换器 我在网上找到了用于执行 jsonp 转换的源代码 我正在使用 Sp

随机推荐

  • Linux 如何快速查看 IP 地址

    查看IP 1 进入Linux 系统 在主页面空旷的地方右键 选择 打开终端 2 在显示的界面中输入 ifconfig a 就可以查看到Linux 的地址了 快速查看IP 和修改 1 点击应用程序 gt 选择系统工具 选择设置 gt 找到网络
  • Ubuntu 安装 zshell

    一 检查系统中原来的shell cat etc shells 二 安装 zsh apt install zsh 安装zsh chsh s bin zsh 将zsh设置成默认shell 不设置的话启动zsh只有直接zsh命令即可 三 安装oh
  • 二叉树知识总结

    一 前言 数组的搜索比较方便 可以直接用下标 但删除和插入就比较麻烦 链表与之相反 删除和插入元素很快 但查找比较慢 此时 二叉树应运而生 二叉树既有链表的好处 也有数组的好处 在处理大批量的动态数据时比较好用 是一种折中的选择 文件系统和
  • 线程——一个计数器计数到100,在每个数字之间暂停1秒,每隔10个数字输出一个字符串

    16 一个计数器计数到100 在每个数字之间暂停1秒 每隔10个数字输出一个字符串 public class MyThread extends Thread public void run for int i 0 i lt 100 i if
  • Qt 环境搭建

    安装QtCreator 进入Qt官网https www qt io zh cn 点击下载按钮 然后选择试用Qt 这里下载的是免费版本 也就是社区版本 如果点击购买则下载专业版 点击下载后需要填写个人信息 填好邮箱和手机 还需要填写用途 并选
  • 【基于深度学习的生活垃圾分类识别管理可视化系统-哔哩哔哩】 https://b23.tv/0UBohX2

    基于深度学习的生活垃圾分类识别管理可视化系统 哔哩哔哩 https b23 tv 0UBohX2 https b23 tv 0UBohX2
  • 【前端】Vue+Element UI案例:通用后台管理系统-Header+导航栏折叠

    文章目录 目标 代码 0 创建组件 1 按钮 2 头像下拉框 3 去除左右缝隙 4 点击按钮折叠导航栏 Vuex 5 折叠标题和Header效果 总代码 CommonHeader vue store的index js store的tab j
  • 误区 一下代码是曾经误认为 radio的onclick 事件在 发生 以下是实例代码

    实际上onclick事件还是在radio上发生 只不过是通过js把 a 标签的href属性的 值 给动态的发生该表了而已 误以为是在 a 标签上发生了onclick事件 a a
  • playwright自动化项目搭建

    具备功能 关键技术 pylaywright测试库 pytest单元测试框架 pytest playwright插件 非关键技术 pytest html插件 pytest rerunfailures插件 seldom 测试框架 实现功能 元素
  • 静态链接原理以及过程

    通常程序的编译中 或多或少会调用其它库中的函数接口 本篇blog就是讲静态库的调用流程 通常我们知道编译一个可执行程序会有这四个过程 预处理 编译 汇编以及链接 前面三步就是产生目标文件 o的过程 链接就是把各个 o文件粘在一起 构成一个可
  • 杂项设备(misc device)和字符设备(char device)区别

    杂项设备 misc device 杂项设备也是在嵌入式系统中用得比较多的一种设备驱动 在 Linux 内核的include linux目录下有Miscdevice h文件 要把自己定义的misc device从设备定义在这里 其实是因为这些
  • Go语言基础面试题

    一 选择题 1 关于异常设计 下面说法正确的是 A 在程序开发阶段 坚持速错 让程序异常崩溃 开发 测试 准生产 生产 B 在程序部署后 应恢复异常避免程序终止 C 一切皆错误 不用进行异常设计 D 对于不应该出现的分支 使用异常处理 参考
  • 2021-08-03训练记录

    2021 08 03训练记录 Magic Line String Invasion A B C 小biu放牛 小A的游戏 A B C Magic Line 样例输入 1 4 0 1 1 0 1 0 0 1 样例输出 1 999000000
  • 原始GPS与百度、谷歌、高德地图的相互转换(c语言转换)

    原始GPS与百度 谷歌 高德地图的相互转换 c语言转换 原始GPS与百度 谷歌 高德地图的相互转换 1 介绍三种坐标系 2 WGS84 GCJ02 BD09之间的相互转换 C语言实现 原始GPS与百度 谷歌 高德地图的相互转换 1 介绍三种
  • centos 7中NGINX负载均衡(最详细)

    环境 centos7 192 168 186 140 负载均衡 centos7 192 168 186 141 web端 centos7 192 168 186 142 web端 1 关闭防火墙与setenforce web端也要执行 ro
  • json 模块:处理 JSON 数据

    JSON JavaScript Object Notation 是一种轻量级的数据交换格式 易于人阅读和编写 同时也易于机器解析和生成 JSON 基础 JSON 的基础结构有两种 键值对 name value pairs 和数组 array
  • VS编译程序缺失msvcp140d.dll、vcruntime140d.dll和ucrtbased.dll解决方法

    今天编译的一个程序到客户现场电脑上运行闪退 查看发现缺少msvcp140d dll vcruntime140d dll以及ucrtbased dll 总结一下解决办法 供大家参考 方式一 找到对应的 msvcp140d dll vcrunt
  • Java的SSH连接远程服务器

    在我们的示例中 我们将首先打开SSH连接 然后执行一个命令 读取输出并将其写入控制台 最后关闭SSH连接 我们将使示例代码尽可能简单 2 JSch JSch 是SSH2的Java实现 它使我们可以连接到SSH服务器并使用端口转发 X11转发
  • 记几个数据查询语句

    查看某用户所在的表空间SELECT USERNAME DEFAULT TABLESPACE FROM DBA USERS WHERE USERNAME GISAP 查看用户表分区select from user tab partitions
  • java中 instanceof 关键字 作用 和 实际用途

    instanceof 闲聊一下 所谓看书只看前三章 基础java决定上限 所以说基础很重要 Java也是基础扎实决定你的上限 1 instanceof 是Java中的一个关键字 Java中的关键子都是小写 2 instanceof关键字的作