java相等_Java 判断相等

1.除 float 和 double 外的原始数据类型 : 使用 ==

long a = (long) 1234567890;long b = (long) 1234567890;if (a ==b) {

System.out.println("基本数据类型相等");

}

2.包装类使用 equals 或者转换为基本数据类型再用 ==

Long a = (long) 1234567890;

Long b= (long) 1234567890;if (a != null &&a.equals(b)) {

System.out.println("包装类相等");

}if (a != null && a.longValue() ==b.longValue()) {

System.out.println("包装类相等");

}

3.对象要用 equals

String a1= null;

String b1= newString();if (a1 != null && a1.length() > 0 &&a1.equals(b1)) {

System.out.println("对象相等");

}

附录:

public static void main(String[] args) {

System.out.println("-----");

int a = 200;

int a2 = 200;

if (a == a2) {

System.out.println("相等");//√

}

System.out.println("-----");

Integer b = 200;

Integer b2 = 200;

if (b == b2) {

System.out.println("相等");//-128~127√

}

if (b.equals(b2)) {

System.out.println("相等2");//√

}

System.out.println("-----");

Integer c = new Integer(200);

Integer c2 = new Integer(200);

if (c == c2) {

System.out.println("相等");

}

if (c.equals(c2)) {

System.out.println("相等2");//√

}

System.out.println("-----");

if (a==c){

System.out.println("相等");//√

}

if (c.equals(a)){

System.out.println("相等2");//√

}

if (b==c){

System.out.println("相等3");

}

if (c.equals(b)){

System.out.println("相等4");//√

}

}

public static void main(String[] args) {

System.out.println("-----");

String a = "a";

String a2 = "a";

if (a == a2) {

System.out.println("相等");//√

}

if (a.equals(a2)) {

System.out.println("相等2");//√

}

System.out.println("-----");

String b = new String("a");

String b2 = new String("a");

if (b == b2) {

System.out.println("相等");

}

if (b.equals(b2)) {

System.out.println("相等2");//√

}

System.out.println("-----");

if (a == b) {

System.out.println("相等");

}

if (a.equals(b)) {

System.out.println("相等2");//√

}

}

public static void main(String[] args) {

System.out.println("-----");

boolean a = true;

boolean a2 = true;

if (a == a2) {

System.out.println("相等");//√

}

System.out.println("-----");

Boolean b = true;

Boolean b2 = true;

if (b == b2) {

System.out.println("相等");//√

}

if (b.equals(b2)) {

System.out.println("相等2");//√

}

System.out.println("-----");

Boolean c = new Boolean(true);

Boolean c2 = new Boolean(true);

if (c == c2) {

System.out.println("相等");

}

if (c.equals(c2)) {

System.out.println("相等2");//√

}

System.out.println("-----");

if (a == c) {

System.out.println("相等");//√

}

if (c.equals(a)) {

System.out.println("相等2");//√

}

if (b == c) {

System.out.println("相等3");

}

if (c.equals(b)) {

System.out.println("相等4");//√

}

}

超类 Object 中有这个 equals() 方法,该方法主要用于比较两个对象是否相等。该方法的源码如下:

public boolean equals(Object obj) {

return (this == obj);

}

我们知道所有的对象都拥有标识(内存地址)和状态(数据),同时“==”比较两个对象的的内存地址,所以说使用 Object 的 equals() 方法是比较两个对象的内存地址是否相等,即若 object1.equals(object2) 为 true,则表示 equals1 和 equals2 实际上是引用同一个对象。虽然有时候 Object 的 equals() 方法可以满足我们一些基本的要求,但是我们必须要清楚我们很大部分时间都是进行两个对象的比较,这个时候 Object 的 equals() 方法就不可以了,实际上 JDK 中,String、Math 等封装类都对 equals() 方法进行了重写。

在 Java 规范中,它对 equals() 方法的使用必须要遵循如下几个规则:

equals 方法在非空对象引用上实现相等关系:

1、自反性:对于任何非空引用值 x,x.equals(x) 都应返回 true。

2、对称性:对于任何非空引用值 x 和 y,当且仅当 y.equals(x) 返回 true 时,x.equals(y) 才应返回 true。

3、传递性:对于任何非空引用值 x、y 和 z,如果 x.equals(y) 返回 true,并且 y.equals(z) 返回 true,那么 x.equals(z) 应返回 true。

4、一致性:对于任何非空引用值 x 和 y,多次调用 x.equals(y) 始终返回 true 或始终返回 false,前提是对象上 equals 比较中所用的信息没有被修改。

5、对于任何非空引用值 x,x.equals(null) 都应返回 false。

对于上面几个规则,我们在使用的过程中最好遵守,否则会出现意想不到的错误。

在 java 中进行比较,我们需要根据比较的类型来选择合适的比较方式:

1) 对象域,使用 equals 方法 。

2) 类型安全的枚举,使用 equals 或== 。

3) 可能为 null 的对象域 : 使用 == 和 equals 。

4) 数组域 : 使用 Arrays.equals 。

5)除 float 和 double 外的原始数据类型 : 使用 == 。

6) float 类型: 使用 Float.foatToIntBits 转换成 int 类型,然后使用==。

7) double 类型: 使用 Double.doubleToLongBit 转换成 long 类型,然后使用==。

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

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

相关文章

农委系统先进集体推荐报告_来自司法行政的他们,荣获上海档案系统表彰!

为表彰先进、弘扬正气,激发全市各级档案部门和广大档案工作者的积极性和创造性,进一步推进上海档案事业创新发展,经各地区、各部门、各单位民主推荐,市人力资源社会保障局和市档案局审核同意,决定授予50家集体“上海市…

java如何获得wlan mac_Android M 如何获取 Wifi MAC地址

今天在撸代码时发现,之前能获取mac地址的方法在nexus 6上返回了“02:00:00:00:00:00”,进入设置查看mac地址,结果不相同,肯定有问题,于是就开始上网查资料一探究竟。原先获取mac地址的代码段:6.0之前获取ma…

python docx官网_【记录】尝试用DocxyGen为Python代码生成文档

【背景】之前折腾技术的时候,或多或少,知道一个东西:DocxyGen是用于从代码生成文档的。最近,又从:->该地址无效,但是自己手动输入地址,而找到:看到页面右下角,就显示了…

我的世界java多大内存_我的世界电脑版内存多大

下载方法如下:1,百度搜索 我的世界电脑版,即可找到下载。2,直接点击普通下载,即可下载。3,我的世界电脑版硬件要求如下:最低配置:CPU:1.5G GHz多和处理器/2.0GHz单核处理…

天正双击墙体不能编辑_今日设计分享:CAD常用快捷键、Ps快捷键大全、天正快捷键总结!...

▶今天记忆一个技巧,成就明天一个大师!▶同行小可爱们,加油吧!CAD最常用快捷键L直线;PL多段线;U回车Ctrlz后退;D修改,调整;REC矩形;C圆;TR修剪&am…

java获取spring注解的实体_Spring 注解实体类中非数据库字段属性

今天要给一个实体类添加一个List集合属性!private List childList new ArrayList();写完后get/set方法一写,启动就报错:org.hibernate.MappingException: Could not determine type for: java.util.List, at table: T_REVERTS, for columns:…

odoo tree视图过滤数据_数据存储结构 LSM Tree PK B TREE (从底层了解数据库设计)...

随着使用数据库的深度和理解能力的提升,有一个问题硬件的提升,与数据量的变化是否对数据库底层的架构有冲击。 我们公认的BTREE BTREE 是否还能面对现在的硬件的变化。 BTREE 到底是为那种硬件逻辑来服务的,这点是需要搞清楚的在MYSQL 中使用的BTREE的改…

java s结尾的工具类_FilenameUtils工具类

commons-iocommons-io2.4import java.util.ArrayList;import java.util.List;import org.apache.commons.io.FilenameUtils;import org.apache.commons.io.IOCase;/*** org.apache.commons.io.FilenameUtils工具类笔记* author*/public class FilenameUtilsTest {public static…

python类继承返回值_python继承threading.Thread实现有返回值的子类实例

继承与threading.thread实现有返回值的子类mythread,废话不多说,大家直接看代码import threadingclass mythread(threading.thread):def __init__(self,func,args()):super(mythread,self).__init__()self.func funcself.args argsdef run(self):self.…

python继承super函数_Python中的super函数如何实现继承?

本篇文章给大家带来的内容是关于Python 中的super函数如何实现继承?有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。Py 2.x 和 Py 3.x 中有一个很大的区别就是类,无论是类的定义还是类的继承。Py 3.x 中类的继承可以直接使用…

java逸出_Java并发编程 - 对象的共享

编写正确的并发程序,关键问题在于:在访问共享的可变状态时需要进行正确的管理。同步代码块和同步方法可以确保以原子的方式执行操作,同步还有另一个重要的方面:内存可见性。可见性为了确保多个线程之间对内存写入操作的可见性&…

mgr未同步 mysql_mysql8.0 搭建mgr踩坑记录

启动总是报错:2020-08-21T04:52:36.332502Z 10 [System] [MY-010597] [Repl] CHANGE MASTER TO FOR CHANNEL group_replication_applier executed. Previous state master_host, master_port 3306, master_log_file, master_log_pos 4, master_bind. New state mast…

java rpm包安装_rpm包安装java jar开机自启

1.下载jdk2.安装jdk;rpm -ivh jdk-8u201-linux-x64.rpm3.检查安装:java -version输出Java版本,则不用第4步和第5步4.配置jdk路径打开/etc/profile增加以下内容:export JAVA_HOME/usr/java/jdk1.8.0_201export JAVA_BIN/usr/java/j…

idea 保存设置 新建项目_配置、创建IntelliJ IDEA Spring MVC 项目

前言步骤,下载安装 IntelliJ IDEA及Tomcat 客户端、服务端下载安装,这些都配置完之后准备创建项目点击下一步修改完项目名称其他的名称也跟项目名称一样,我就改了保存位置其他都跟项目名称一样的名字,点击Finish后会下载本框架需要…

java+中的final关键字有哪些用法_Java中的Final关键字用法汇总及简单示例

可能使用到final的情况有3种:数据、方法和类。一、final数据对于基本类型,final使数值恒定不变;而对于对象引用,final使引用恒定不变。一旦引用被初始化指向一个对象,就无法把它改为指向另一个对象。然而,对…

mr图像翻转的原因_MRI图像常见问题及对策

1MRI图像常见伪影及对策伪影是指MR图像中与实际解剖结构不相符的信号,可以表现为图像变形、重叠、缺失、模糊等。每一幅MRI图像都存在不同程度的伪影。MRI检查中伪影主要造成三个方面的问题:(1)使图像质量下降,甚至无法分析;(2)掩…

java icon动态变换,以编程方式自动更改ImageIcon [Java]

I am making a simple game right now. When a JButton is clicked, the ImageIcon of a JLabel is supposed to change. How can I accomplish this?解决方案Simple, just quickly run setIcon() on the JLabel via the action listener of the button.An example:if ("…

shell打开wifi命令_MacWiFi:一款管理Mac系统WIFI的命令行工具(包含交互式Shell)...

今天给大家介绍的是一款名叫mac-wifi的命令行工具,它可以管理macOS系统的无线网络,并且还提供了交互式Shell。mac-wifimac-wifi脚本可以查询或管理macOS平台上的WiFi配置以及网络环境信息,脚本代码在最小化的类中实现了针对macOS环境的设计逻…

java电脑类的接口_java 一个类实现两个接口的案例

直接用英文逗号分隔就可以了,比如:?12345678910111213141516171819inerface IHello {String sayHello(String name);}interface IHi {String sayHi(String name);}class ServiceImplimplements IHello, IHi {// 实现三个四个。。。n个接口都是使用逗号分…

单片机 架构 程序 经验总结_单片机学习心得体会_经验总结

单片机简介单片机主要由运算器、控制器和寄存器三大部分构成。其中,运算器由算术逻辑单元(ALU)、累加器、寄存器等构成,首先累加器和寄存器向ALU输入两个8位源数据,其次ALU完成源数据的逻辑运算,最后将运算结果存入寄存器中;控制器…