java基础记录·杂(instanceof与getClass)

instanceof和getClass区别说明 instanceof和getClass的区别 阅读详情

在比较一个类是否和另一个类属于同一个类实例的时候,我们通常可以采用instanceof和getClass两种方法通过两者是否相等来判断,但是两者在判断上面是有差别的,下面从代码中看看区别:

public class Test  
{  
    public static void testInstanceof(Object x)  
    {  
        System.out.println("x instanceof Parent:  "+(x instanceof Parent));  
        System.out.println("x instanceof Child:  "+(x instanceof Child));  
        System.out.println("x getClass Parent:  "+(x.getClass() == Parent.class));  
        System.out.println("x getClass Child:  "+(x.getClass() == Child.class));  
    }  
    public static void main(String[] args) {  
        testInstanceof(new Parent());  
        System.out.println("---------------------------");  
        testInstanceof(new Child());  
    }  
}  
class Parent {  
  
}  
class Child extends Parent {  
  
}  
/* 
输出: 
x instanceof Parent:  true 
x instanceof Child:  false 
x getClass Parent:  true 
x getClass Child:  false 
--------------------------- 
x instanceof Parent:  true 
x instanceof Child:  true 
x getClass Parent:  false 
x getClass Child:  true 
*/ 

从程序输出可以看出,:

instanceof进行类型检查规则是:你属于该类吗?或者你属于该类的派生类(子类)吗?

而通过getClass获得类型信息采用==来进行检查是否相等的操作是严格的判断。不会存在继承方面的考虑;


Java中String与Integer的equals比较原理与解决方案 在Java编程中,equals方法是对象比较的核心机制,遵循严格的类型检查原则。当比较String与Integer等不同类型对象时,由于继承体系差异,直接调用equals会返回false。理解这一现象需要掌握Java类型系统和equals方法的实现契约,包括自反性、对称性等五大原则。实际开发中,可通过显式类型转换、parseInt值比较或Objects工具类实现跨类型比较。该机制在集合操作、数据验证等场景尤为重要,正确处理类型差异能避免常见的逻辑错误。本文通过String与Integer的典型对比案例,深入 阅读详情

相关推荐

Java强制类型转换深度解析:从ClassCastException到内存泄漏的避坑指南

强制类型转换是Java类型系统的核心机制之一,它连接着编译时类型检查与运行时类型信息(RTTI)。其原理在于开发者向编译器做出“类型承诺”,JVM则在运行时验证该承诺是否成立,验证失败即抛出ClassCastException。这项技术的价值在于允许程序在继承体系与泛型擦除的约束下进行灵活的类型操作,但误用会导致数据静默损坏、内存泄漏等严重问题。在工程实践中,强制类型转换广泛应用于处理遗留代码、框架集成、数据反序列化等场景,尤其是在处理集合类型转换和自动装箱拆箱时,必须结合instanceof检查与防御性编

430

Java基础之—反射(一)

Java基础之—反射(一) 概述: 1、介绍什么是反射 2、获得Class类对象的三种方式 一、什么是反射 描述得到数据结构的结构的数据的一种行为。 二、通过反射可以得到什么? 三、获得Class类对象的三种方式 public class ClassDemo { public static void main(String[] args) throws Exce...

Bruce小鬼 975

Java instanceof和getClass()区别实例解析

主要介绍了Java instanceof和getClass()区别实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

getClass()和instanceof

如果`B`是`A`的子类,那么一个`B`的实例既是`B`的实例也是`A`的实例,使用`instanceof`操作符会返回`true`,而使用`getClass`比较则会返回`false`。而`getClass`通常用于反射或其他需要获取对象类信息的场景。- **类型比较**:`getClass`比较的是对象的精确类型,而`instanceof`比较的是对象是否属于某个类或其子类的实例。- **返回值**:`getClass`返回的是一个`Class`对象,而`instanceof`返回的是一个布尔值。

2302_79648928的博客 654

STM32F103 串口DMA + 空闲中断 实现不定长数据收发

文章目录1. 空闲中断1.1 uart_dma.c1.2 uart_dma.h1.3 main.c1.4 stm32f10x_it.c1.5 效果演示1.6 知识补充1.6.1 外设的基地址     DMA(Direct Memory Access,直接存储器访问) 是所有现代电脑的重要特色,它允许不同速度的硬件装置来沟通,而不需要依赖于 CPU 的大量中断负载。否则,CPU 需要从来源把每一片段的资料复制到暂存器,然后把它们再次写回到新的地方。在这个时间中,CPU

夏夜晚风_的博客 3万+

用PY32F003F18的PWM互补输出驱动无刷电机,保姆级配置流程(含代码)

本文详细介绍了如何利用PY32F003F18微控制器的TIM1定时器配置PWM互补输出功能来驱动三相无刷电机,涵盖硬件设计、代码实现及六步换相算法。通过保姆级配置流程和实用代码示例,帮助开发者快速掌握无刷电机驱动技术,适用于工业自动化和消费电子等领域。

weixin_26905487的博客 379

Java中instanceof和getClass()的不同

1.两者类型不同 instanceof是Java中的操作符,类似于 ==,>。 getClass()是Object类的方法,可返回Class类型的实例,对其调用其他的方法,可以获得当前类的各种信息 //final方法不允许Override public final Class<?> getClass(); 2.对于继承关系判断的不同 class Music { @Override public String toString() { retur

zjxht62的博客 577

VisionMaster图像源模块的5个隐藏功能:从自动切换到二次开发接口

本文深入解析了VisionMaster图像源模块的5个隐藏功能,从基础的自动切换与字符触发过滤,到高级的脚本扩展与基于COM组件的二次开发接口。这些功能能显著提升工业视觉项目的自动化水平、灵活性与系统集成能力,帮助开发者实现更高效的离线测试流水线和外部精确控制。

rgv23456789的博客 651

instanceof 和 getclass()

::

Wenkie233的博客 340

地瓜机器人RDK Studio使用入门教程

不知道大家在使用AI开发板的时候有没有遇到过板子官方镜像占据空间大难以保存,想要的时候找不到?官方示例项目久而久之便难以找寻?首次登陆开发板连接网络还需要准备显示器键盘鼠标外设繁杂?…为了解决平时开发过程中遇到的种种不便利问题,地瓜机器人创新的推出了RDK Studio这一官方开发者软件,使智能机器人开发迎来新纪元!通过这一软件极大降低了机器人的开发门槛,哪怕是零基础的用户亦可轻松上手RDK系列板卡!

xiongqi123123的博客 3429

UG\NX二次开发 找不到指定的dlx文件(Specified Dlx file not found)

有群友问:用Ctrl+U运行的时候就报错,找不到指定的dlx文件Specified Dlx file not found。怎么处理。

王牌飞行员_里海的博客 1130

Java instanceof操作符:类型检查与模式匹配实战

类型检查是面向对象编程的核心机制,Java通过instanceof操作符实现运行时类型识别。其原理是通过JVM层面的Klass指针遍历继承链,相比getClass()方法具有更好的多态支持。在工程实践中,instanceof既能防止ClassCastException确保类型安全,又能在框架开发中处理动态代理和泛型擦除问题。随着Java16+的模式匹配特性引入,instanceof进一步升级为支持变量绑定的智能类型检查工具,广泛应用于策略模式、访问者模式等设计场景。合理使用这一基础操作符,能显著提升代码的健

weixin_34121304的博客 374

Unreal 从入门到精通之VR常用操作

本文总结了使用Unreal5开发VR项目时遇到的常见问题及其解决方案。首先,介绍了如何通过VRPawn的TryTeleport函数设置玩家视角位置,确保头显移动时安全区域的正确传送。其次,详细说明了如何在Unreal中播放视频,包括导入视频文件、创建媒体播放器和媒体纹理,并将其应用到3D物体上。接着,讲解了如何播放VR全景视频,建议使用MediaPlate媒体板并调整几何体为球体。最后,讨论了如何手动打开和关闭VR模式,以便在PC模式和头显模式之间切换。这些方法为VR开发提供了实用的技术指导。

TxNet 951

Java类型检查的真相:为什么instanceof对float“无能为力”?

揭秘Java类型检查机制,解析为何instanceof的float判断不适用。本文详述instanceof的实际应用场景与替代方案,帮助开发者准确进行类型判断,提升代码健壮性。理解原理,避免常见误区,值得收藏。

CompiGap的博客 567

问题解答:如何不通过修改底层数据库表的方式,给数据库对应的数据结构,增添新的字段?

现在需要将这张表里的内容读取到 ABAP 内表里,并且针对每个行项目,增加一个新的列字段,我随便举个例子,这个列字段名称叫 LENGTH,值为 OBJ_NAME 字段的长度,使用。最笨的办法就是下面这样定义一个新的类型,这个类型的每个字段名称,都来自数据库表 TADIR 的同名字段,在末尾再增添自定义字段 length.其实我们是做 ALV 输出,只需要 ABAP 内表变量的类型,包含 TADIR 数据库表的全部字段,再加上新的 LENGTH 字段即可。这相当于多了一个中间层,没办法直接被 ALV 处理。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 481

YOLO26改进策略【Neck】| CVPR 2024 MFM(Modulation Fusion Module,调制融合模块):动态特征加权融合,突出关键特征抑制冗余

本文主要利用DCMPNet中的 MFM 模块优化 YOLO26 的目标检测网络模型。模块通过动态调制特征融合过程,实现了对多尺度、跨层级特征的智能聚合。将其应用于的改进过程中,针对目标检测中边界特征与语义信息的互补性需求,缓解网络中浅层细节与深层语义融合不足的问题。Depth Information Assisted Collaborative Mutual Promotion Network for Single Image Dehazing在图像去雾网络中,不同层级和类型的特征包含着互补的信息(如浅层的

Limiiiing的博客 223

Java instanceof 运算符深度解析:从核心机制到实战避坑指南

在Java编程中,类型检查是确保代码健壮性的基础环节。其核心原理在于运行时动态验证对象与目标类型的继承或实现关系,这为安全地进行向下转型提供了保障。这项技术的核心价值在于实现防御性编程,有效避免ClassCastException,从而提升系统的稳定性与容错能力。它广泛应用于处理异构数据源、实现插件化架构、适配第三方库以及重构遗留代码等场景。本文聚焦于instanceof这一关键运算符,结合类型守卫和模式匹配等热词,深入剖析其工作机制、典型应用模式、常见性能误区及与Java新特性的结合方式,为工程师提供一套

weixin_33826609的博客 413

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Java高手才知道的秘密:如何绕过instanceof实现byte数组的运行时判断,

掌握绕过instanceof实现byte数组运行时判断的技巧,解决类型检测性能瓶颈。适用于高频数据处理场景,通过Class.isInstance替代instanceof的 byte 判断,提升执行效率。方法简单兼容性强,值得收藏。

PoliSeed的博客 902

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Java Object类核心方法解析与最佳实践

在Java面向对象编程中,Object类作为所有类的超类,定义了对象的基础行为规范。其核心方法如equals()、hashCode()和toString()构成了Java对象模型的基石,直接影响对象的比较、哈希存储和字符串表示等关键操作。理解这些方法的实现原理对于编写健壮代码尤为重要,例如equals()方法需要满足自反性、对称性等五大原则,而hashCode()必须与equals()保持逻辑一致以确保HashMap等集合的正确性。实际开发中,IDE工具可自动生成规范实现,同时Java 7引入的Object

weixin_30394669的博客 454

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

【Java学习】3. Methods

3.Methods3.1 Method-Call Stack and Activation Records3.1.1 Stack data structure3.1.2 Activation Records3.2 Constructors3.2.1 普通构造函数3.2.2 静态构造函数3.2.3 私有构造函数3.3 Others3.3.1 instanceof() 和 getClass()3.3....

weixin_44042270的博客 682

【Java】 Java中如何确定对象的类

在Java中,每个对象都有一个与之对应的类,这个类定义了对象的属性和方法。但是,有时候我们需要在运行时确定一个对象的确切类,这在编写灵活和可扩展的代码时非常有用。虽然它不直接返回类的名称,但它可以帮助我们了解对象的类型。> (1)纯Python语言实现,使用Flask后端,本地分析,不上传个人数据。> (2)内含QQ、微信聊天记录保存到本地的方法,真正实现自己数据自己管理。方法,这个方法返回一个表示对象当前运行时类的对象,即。在Java中,确定对象的类是一个常见的需求,可以通过。

baidu_23445983的博客 469

java基础知识

java基础知识

xgq_111的博客 2231

Java基础

JAVA后端面试题<JAVA基础> 1.JDK和JRE有什么区别? JDK: JAVA Development Kit的简称,JAVA开发工具包,包括了JAVA的开发环境和运行环境(JRE)。 JRE: JAVA Runtime Environment的简称,JAVA运行环境。 两者关系: JDK包含JRE,同时还包含了JAVA源码编译器 JAVAC,还包含了JAVA程序调试和分析的.........

weixin_43766298的博客 760

java类的equals方法

  过年结束了,今天想温故下java的基础知识,突然想起当初遇到过的equals方法重写的问题,特此回忆记录下:   大多数的书,教材甚至在jdk上的equals重写代码都如下   @Override public boolean equals(Object obj) { if(obj==this) return true;//quick check 短路检查 ...

JackAndroid的专栏 195

Java 泛型接口详解:从基础到实战

泛型接口-1 interface interfaceDemo<T>{ public void show(T t); } class demo<P> implements interfaceDemo<P> { public void show(P t) { System.out.println(t); } } public class test { ...

liumingxiy的博客 225
上一篇: demo项目开发笔录(web和mobile)
下一篇: java基础记录·杂(while、split、位运算符)
gcc_front
博客等级 码龄9年 16粉丝 98原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值