当前位置: 首页 > news >正文

Java中相等比较详解

本文对Java中的相等判断进行详细解释,包括==,equals和compareTo等。

一、== 运算符

1. 用途
基本数据类型:用于比较两个基本数据类型的值是否相等。
引用类型:用于比较两个对象引用是否指向同一个对象。
2. 示例

// 基本数据类型比较
int a = 5;
int b = 5;
System.out.println(a == b); // 输出 true// 引用类型比较
String str1 = new String("hello");
String str2 = new String("hello");
System.out.println(str1 == str2); // 输出 false
String str3 = str1;
System.out.println(str1 == str3); // 输出 true

二、equals 方法

1. 用途
引用类型:用于比较两个对象的内容是否相等。Object 类中的 equals 方法默认实现是使用 == 比较对象引用,许多类(如 String、Integer 等)重写了 equals 方法,用于比较对象的内容。
2.示例

// String 的 equals 方法比较内容
String str1 = new String("hello");
String str2 = new String("hello");
System.out.println(str1.equals(str2)); // 输出 true// 自定义类中重写 equals 方法
class Person {String name;Person(String name) {this.name = name;}@Overridepublic boolean equals(Object obj) {if (this == obj) return true;if (obj == null || getClass() != obj.getClass()) return false;Person person = (Person) obj;return name.equals(person.name);}
}Person p1 = new Person("John");
Person p2 = new Person("John");
System.out.println(p1.equals(p2)); // 输出 true

三、compareTo 方法

1. 用途
Comparable 接口:compareTo 方法用于定义对象的自然顺序。实现了 Comparable 接口的类必须重写 compareTo 方法,以便比较对象大小。
2. 示例

// 实现 Comparable 接口的类
class Person implements Comparable<Person> {String name;Person(String name) {this.name = name;}@Overridepublic int compareTo(Person other) {return this.name.compareTo(other.name);}
}Person p1 = new Person("John");
Person p2 = new Person("Alice");
System.out.println(p1.compareTo(p2)); // 输出正值,因为 "John" 大于 "Alice"

四、compare 方法

1. Comparator 接口:用于在需要多个排序标准时,定义自定义比较器。Comparator 接口的 compare 方法可以用来比较两个对象。
2.示例

import java.util.Comparator;class Person {String name;Person(String name) {this.name = name;}
}// 自定义 Comparator
class PersonNameComparator implements Comparator<Person> {@Overridepublic int compare(Person p1, Person p2) {return p1.name.compareTo(p2.name);}
}Person p1 = new Person("John");
Person p2 = new Person("Alice");
PersonNameComparator comparator = new PersonNameComparator();
System.out.println(comparator.compare(p1, p2)); // 输出正值,因为 "John" 大于 "Alice"

五、比较

运算符/方法用途比较内容适用类型示例
==比较相等值或引用基本类型和对象引用a == b
equals比较内容内容引用类型str1.equals(str2)
compareTo比较大小内容引用类型,实现 Comparable 接口p1.compareTo(p2)
compare自定义比较内容引用类型,实现 Comparator 接口comparator.compare(p1, p2)
http://www.lryc.cn/news/386297.html

相关文章:

  • HBuilder X 小白日记01
  • 使用Protocol Buffers优化数据传输
  • 如何把mkv转成mp4?介绍一下将mkv转成MP4的几种方法
  • PHP语言学习02
  • PX2资料及问题记录
  • Jenkins容器的部署
  • QT 自绘树形控件
  • axios之CancelToken取消请求
  • Unity | API鉴权用到的函数汇总
  • 【python】socket通信代码解析
  • FastGPT 手动部署错误:MongooseServerSelectionError: getaddrinfo EAI_AGAIN mongo
  • 用英文介绍芝加哥(1):Making Modern Chicago Part 1 Building a Boomtown
  • 【启明智显分享】低成本RISC-V工业级HMI方案推荐
  • 深入探索STM32的SPI功能:W25Q64 Flash存储器全攻略
  • 【SQL Server数据库】带函数查询和综合查询(1)
  • 使用WebService接口进行数据通信
  • AI进阶指南第五课,大模型相关概念(知识库,微调)
  • 【深度学习基础】`view` 和 `reshape` 的参数详解
  • 【笔记】Spring Cloud Gateway 实现 gRPC 代理
  • 云顶之弈数据网站
  • Linux(Ubuntu)下源码开发整个流程完成版本(下载->编译->模拟器运行)
  • el-form表单实现校验
  • 一台TrinityCore服务器客户端连接网速慢(未解决)
  • [系统运维|Xshell]宿主机无法连接上NAT网络下的虚拟机进行维护?主机ping不通NAT网络下的虚拟机,虚拟机ping的通主机!解决办法
  • C 语言实例 - 查找数组中最大的元素值
  • MySQL之可扩展性(七)
  • 微服务框架中Nacos的个人学习心得
  • Unity Animator 运行时修改某个动画状态的播放速度
  • 阿里云常用的操作
  • 【MATLAB源码-第231期】基于matlab的polar码编码译码仿真,对比SC,SCL,BP,SCAN,SSC等译码算法误码率。