Java 中的== 和equals()方法

【代码审计】RuoYi定时任务漏洞:从SQL注入到RCE的攻防演变 本文深入剖析了RuoYi框架定时任务模块从早期版本无校验到引入黑白名单机制,再到被组合利用实现RCE的完整漏洞演变过程。文章详细分析了SQL注入与定时任务功能结合导致的远程代码执行漏洞,并总结了代码审计与安全开发的核心要点,为开发者提供了重要的安全参考。 阅读详情
Java中的数据类型,可分为两类: 
1.基本数据类型,也称原始数据类型。byte,short,char,int,long,float,double,boolean 
  他们之间的比较,应用双等号(==),比较的是他们的值。 
2.引用数据类型(类) 
  当它们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false。 Java当中所有的类都是继承于Object这个基类的,在Object中的基类中定义了一个equals()的方法,这个方法的初始行为是比较对象的内存地址,但在一些类库当中这个方法被覆盖掉了,如String,Integer,Date在这些类当中equals有其自身的实现,而不再是比较类在堆内存中的存放地址。

  对于引用数据类型之间进行equals比较,在没有覆写equals方法的情况下,他们之间的比较还是基于他们在内存中的存放位置的地址值的,因为Object的equals方法也是用双等号(==)进行比较的,所以比较后的结果跟双等号(==)的结果相同。

Object中的equals()方法

[java] view plain copy
 print?
  1. public boolean equals(Object obj) {  
  2.         return (this == obj);  
  3.     }  

举个实例:

Person.Java

[java] view plain copy
 print?
  1. package org.java.test;  
  2.   
  3. public class Person {  
  4.   
  5.     private int age;  
  6.     private String name;  
  7.   
  8.     public int getAge() {  
  9.         return age;  
  10.     }  
  11.   
  12.     public void setAge(int age) {  
  13.         this.age = age;  
  14.     }  
  15.   
  16.     public String getName() {  
  17.         return name;  
  18.     }  
  19.   
  20.     public void setName(String name) {  
  21.         this.name = name;  
  22.     }  
  23.   
  24.     public Person(int age, String name) {  
  25.         this.age = age;  
  26.         this.name = name;  
  27.     }  
  28.   
  29.     public Person() {  
  30.     }  
  31.   
  32.     @Override  
  33.     public int hashCode() {  
  34.         final int prime = 31;  
  35.         int result = 1;  
  36.         result = prime * result + age;  
  37.         result = prime * result + ((name == null) ? 0 : name.hashCode());  
  38.         return result;  
  39.     }  
  40.   
  41.     @Override  
  42.     public boolean equals(Object obj) {  
  43.         if (this == obj)  
  44.             return true;  
  45.         if (obj == null)  
  46.             return false;  
  47.         if (getClass() != obj.getClass())  
  48.             return false;  
  49.         Person other = (Person) obj;  
  50.         if (age != other.age)  
  51.             return false;  
  52.         if (name == null) {  
  53.             if (other.name != null)  
  54.                 return false;  
  55.         } else if (!name.equals(other.name))  
  56.             return false;  
  57.         return true;  
  58.     }  
  59.   
  60.       
  61. }  

MainTest.java

[java] view plain copy
 print?
  1. package org.java.test;  
  2.   
  3. public class MainTest {  
  4.     public static void main(String[] args) {  
  5.         Person p1 = new Person(99, "A");  
  6.         Person p2 = new Person(99, "A");  
  7.         Person p3 = p1;  
  8.         System.out.println(p1 == p2);// false  
  9.         System.out.println(p1 == p3);// true  
  10.           
  11.         System.out.println(p1.equals(p2));  
  12.         // 未重写equals()方法,返回false  
  13.         // 重写equals()方法后,比较的是内容,返回true;  
  14.           
  15.         System.out.println("<====================>");  
  16.         String s1 = "hello";  
  17.         String s2 = "hello";  
  18.         String s3 = new String("hello");  
  19.         System.out.println(s1 == s2);// true  
  20.         System.out.println(s1 == s3);// false  
  21.         System.out.println(s1.equals(s2));// true  
  22.         System.out.println(s1.equals(s3));// true  
  23.     }  
  24. }  
海康VisionMaster与西门子PLC1200进行S7通信 通信是连通算法平台和外部设备的重要渠道,在海康VisionMaster算法平台中既支持外部数据的读入也支持数据的写出,当通信构建起来以后既可以把软件处理结果发送给外界,又可以通过外界发送字符来触发相机拍照或者软件运行。 本文以西门子PLC1200作为外部设备为例,讲解海康VisionMaster与西门子PLC1200进行S7通信。...... 阅读详情

相关推荐

使用MLP解决OCR问题(OpenCV)(下)

分类模型:        分类模型涉及的一个比较关键的问题就是输出的10维向量是如何与具体的类别挂钩的。实际上:10维向量的每一位都代表一类,在对于训练集的表达中,如果输入数据是0,则10维向量的第一位赋值为1,其余均为0。即0对应[1,0,0,0,0,0,0,0,0,0]。MLP模型训练完成后,就需要对用户输入的数据所属类别进行判定。这时得到的输出数据基本不可能是正好的所属类为1,其他位置为0

qq_18515405的专栏 1906

java 对象 equals方法吗_java_Java中判断对象是否相等的equals()方法使用教程,Object类中的equals方法用于检测 - phpStudy...

Java中判断对象是否相等的equals()方法使用教程Object类中的equals方法用于检测一个对象是否等于另一个对象。在Object类中,这个方法判断两个对象是否具有相同的引用,如果两个对象具有相同的引用,它们一定是相等的。从这点上看,将其作为默认操作也是合乎情理的。然而,对于多数类类说,这种判断并没有什么意义,例如,采用这种方式比较两个PrintStream是否相等就完全没有意义。然而,...

weixin_39990250的博客 548

华为昇腾Atlas200DK. CANN模型推理——目标检测结果不对(无检测结果)的问题解决

目录前言问题描述问题排查1.后处理模块问题排查2.预处理模块问题排查3.模型问题排查4.算法bug问题排查5.AI板卡问题排查6.模型精度问题排查6.模型推理问题解决:模型输入数据与预处理不同后记 前言 上周我在华为昇腾Atlas200DK中部署nanodet和yolov5时,出现了目标检测结果不对(没有检测到任何物体),困扰了整整三天,最后找到原因并圆满解决,在这里记录一下debug过程。 以上测试均在python中完成。 问题描述 第一天上午,我首先将nanodet由pytorch的.pth模型转换为.

qq_41035283的博客 5604

java if equals_Java条件语句之嵌套 if - 注意equals使用代码String

注意equals使用代码String sex = "女";if (score>80) {if (sex.equals("男")){System.out.println("进入男子决赛");}else {System.out.println("进入女子决赛");}}else {System.out.println("淘汰");}}}Java入门第一季 - public class HelloW...

weixin_42130786的博客 2390

【Java】利用反射执行Spring容器Bean指定的方法,支持多种参数自动调用

目录 使用情景 目的 实现方式 前提: 思路 核心类 测试方法 使用情景 将定时任务录入数据库(这样做的好处是定时任务可视化,也可以动态修改各个任务的执行时间),通过反射执行对应的方法; 配合Netty实现简单的HTTP请求处理框架 其他需要使用反射执行Spring方法的业务亦可 目的 很多文章都提到了反射,但是对于方法参数处理这一块都是明确了类型,不支持按照实际参数动态转换,而本篇文章提供了一个思路怎么做到方法参数的动态调用。 大家也可以...

ITjianshuzhai的博客 2334

自研半导体Fab缺陷分析系统:从Klarf解析到Defect Map可视化的实战替代方案

本文分享了自研半导体Fab缺陷分析系统的实战经验,重点解析了Klarf文件格式与坐标系转换的核心技术,并详细介绍了从数据解析到Defect Map可视化的完整实现路径。该系统旨在为成本敏感或追求技术自主的团队提供一套功能完备的Klarity Defect平替方案,有效降低对昂贵商业软件的依赖,实现缺陷数据的自主分析与可视化。

y7z8a的博客 706

猿创征文|《Java》【速学】(三)if、equals()与Math.random()

《if判断、equals()对象判断与Math.random()小于1.0随机数》

qq_39395109的博客 683

基于深度学习的图像识别技术在农业领域中的应用

是识别"病害种类"还是"病害严重度分级"?前者是分类,后者常需分割或分级回归。是叶片级(离体叶片图像)、植株级(田间单株)、地块级(无人机俯拍)?视角不同,模型差异巨大。实时无人机巡检可能要求 < 50 ms/帧(Jetson Orin),而离线测报可接受秒级推理。类别标签、结构化 JSON、GIS 图斑、报警事件?

AI天才研究院 2163

1. if语句中的==与equals

        今天博主在学Scanner类输入的时候尝试着做了一个小例子,在Scanner的简单运用上没发生任何问题,却在if语句上碰到了字符串判断的问题,话不多说,直接上代码: import java.util.Scanner; public class test { public static void main(String[] args) { Scanner userInfo = new Scanner(Syst

qq_45305583的博客 2687

Apollo 9.0 速度非线性规划算法 – piecewise jerk speed nonlinear optimizer Ⅰ

二次规划的速度规划算法(PiecewiseJerkSpeedOptimizer)的存在两个问题: 这里以一张图来说明上面的问题,假设存在一个实际限速区间(或曲率很大需要降速的区间)[S1, S2],PiecewiseJerkSpeedOptimizer的做法是根据动态规划的st曲线(黑色),找到具体的时间区间[T1, T2],然后对区间[T1, T2]内所有的点施加约束或惩罚。但是二次规划平滑后的曲线(黄色)发生了变化,那么限速区间[S1, S2]对应的时间区间[T1, T2]也发生了变化,所以实际应该是对

WaiNgai 332

【OpenClaw企业级智能体实战】第04篇:OpenClaw成本优化实战——Token消耗降96%!claude-mem+OpenViking从入门到精通

OpenClaw作为企业级智能体框架,凭借强大的自动化能力成为企业数字化转型的热门工具,但原生机制导致的上下文冗余问题,让众多用户面临“Token消耗失控”的困境——单周账单数千元的案例屡见不鲜。本文基于阿里云实测数据与开源工具官方文档,先深度拆解OpenClaw成本黑洞的核心成因(记忆碎片化、Token指数级膨胀),再系统讲解两款核心优化工具(claude-mem单Agent记忆管理、OpenViking多Agent集群底座)的底层原理、算法架构与实现逻辑,提供从环境搭建、工具集成、参数调优到安全部署

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 702

java中equals合if的用法_JAVA中equals的用法

Object类中的equals方法用于检测一个对象是否等于另一个对象。在Object类中,这个方法判断两个对象是否具有相同的引用,如果两个对象具有相同的引用,它们一定是相等的。从这点上看,将其作为默认操作也是合乎情理的。然而,对于多数类类说,这种判断并没有什么意义,例如,采用这种方式比较两个PrintStream是否相等就完全没有意义。然而,经常需要检测两个对象状态的相等性,如果两个对象的状态相等...

weixin_29189373的博客 1280

SPI为什么不需要加上拉电阻

大家好,我是记得诚。I2C因为其开漏的结构,无法输出高电平,所以外部加上拉电阻。我们在使用SPI的时候,发现是不需要加上拉电阻的。主要因为SPI多为推挽的结构,推挽电路,高低电平都可以输出,所以外部不需要加上拉电阻。推挽电路可以用2个三极管或者2个MOS管搭建而成。

记得诚 2621

Java中==与equals()方法的深度解析

特性==运算符equals()方法类型运算符Object类中的方法基本类型比较值不适用(基本类型没有equals()方法)引用类型比较内存地址(是否指向同一个对象)默认比较内存地址,可重写以比较对象内容用途判断两个变量是否指向同一个内存地址或基本值是否相等判断两个对象的内容是否相等(通常需要重写)最佳实践:基本数据类型比较:始终使用==运算符。引用数据类型比较如果你需要判断两个引用是否指向内存中的同一个对象,使用==运算符。如果你需要判断两个对象的内容是否相等,使用equals()方法。

weixin_56018532的博客 944

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Java基础:equals()方法与==的区别

euqals和==区别介绍

愿你我都能实现自己的梦想 1356

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Java中的==和equals()方法的区别是?hashCode()和equals()的关系是什么?

equals()`方法比较两个`CustomObject`实例的`id`属性,而`hashCode()`方法基于`id`属性的值计算散列码。这样,具有相同`id`的`CustomObject`实例将具有相同的`hashCode()`值,并且`equals()`方法将返回`true`。在Java中,`hashCode()`方法和`equals()`方法之间存在特定的关系,这种关系对于使用散列数据结构(如`HashMap`、`HashSet`等)时的正确行为至关重要。2. **`equals()`方法:**

Dyan_csdn的博客 1033

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Java中==和equals()方法的比较

Java中==和equals()方法的比较

weixin_44480874的博客 1798

【Java】Java中的==和equals()方法有什么区别?

=更偏底层,比较地址或数值;equals更偏业务,通常用来比较对象内容,而且可以由类自己定义。一般来说,是使用 == 比较对象的引用(内存地址),用 equals() 比较对象的内容。需要注意的是,在重写equals方法时,应同时重写hashCode方法,以保持equals和hashCode的一致性。

尹一冰的博客 273

java == 与 equals() 方法的区别

java == 与 equals() 方法的区别。各自的使用场景分析。

一步一步往上爬 1009

Java 中 == 与 equals() 方法的深度解析:一次性搞懂对象比较的奥秘

【摘要】Java比较操作符==和equals()的区别: ==用于基本类型值比较和引用类型内存地址比较; equals()默认比较地址,但可重写为内容比较(如String类); 自定义类需同时重写equals()和hashCode()方法,遵循五大规范(自反性、对称性等); 在HashSet等集合中使用时,未重写hashCode()会导致逻辑错误; 核心准则:基本类型用==,对象地址比较用==,内容比较用equals()。掌握二者区别是Java开发基础能力。

Nov_Et的博客 1160

Java中equals()方法和==的区别

==有两种比较方式,比较基本类型的数值和比较引用类的地址。 equals()方法默认是以==来实现,我们也可以在平常的需求中重写equals()方法。

Cirmaster的博客 349

解释Java中的==和equals()方法

equals()`方法比较两个`CustomObject`实例的`id`属性,而`hashCode()`方法基于`id`属性的值计算散列码。这样,具有相同`id`的`CustomObject`实例将具有相同的`hashCode()`值,并且`equals()`方法将返回`true`。在Java中,`hashCode()`方法和`equals()`方法之间存在特定的关系,这种关系对于使用散列数据结构(如`HashMap`、`HashSet`等)时的正确行为至关重要。这种情况称为散列冲突。

Dyan_csdn的博客 456

Java面试-== 和 equals() 方法的区别与实现原理

但很多类(如StringIntegerList)都重写了equals(),让它比较内容而不是引用。equals()场景推荐做法原因比较基本类型使用==直接比较数值比较引用类型是否为同一对象使用==检查内存地址比较对象内容是否相等使用equals()逻辑相等性自定义类正确重写equals()和hashCode()确保在集合中正常工作比较字符串内容使用equals()安全、可靠字符串常量比较可用==(但不推荐)因为常量池,但行为不稳定性能敏感代码避免不必要的equals()

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

equals()方法和==运算符的作用-JAVA

= 比较的是引用(地址),对于基本数据类型则比较的是值。equals() 比较的是对象的内容,对于 String 来说,就是字符串的字符序列。因此,String 类的 equals() 方法和 == 运算符的作用是不一样的。在使用时,要根据具体需求选择合适的方法进行比较。

m0_69550216的博客 429

Java中==和equals()方法的区别

一般情况 我们可以这么理解,==是对引用的比较,也就是比较两个对象是否指向相同的存储位置。而equals() 是比较两个对象的值是否相等。 这个在一般情况下是成立的,但是…… 我们通过查看jdk源码,发现: public boolean equals(Object obj) { return (this == obj); ...

春风十里不如你。 176

Java中equals()方法和==的区别详解

equals()方法和==都是比较两个数据是否相等的,不同的是==用于比较两个基本数据类型,而equals()方法比较两个引用数据类型。==没有什么说的,它比较的是变量里面存放的值,直接拿两个变量进行比较就完了,而equals()方法本来也是直接比较两个变量里面存放的值(地址值),但是如果我们重写了equals()方法就比较的是两个对象了。下面给大家说一下equals()方法的用法吧!

qq_51546137的博客 1364
上一篇: 想要做vim高手,这些必须会!
下一篇: ABAP Programs For Learners
Footloose_
博客等级 码龄10年 254粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值