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

Java之 equals()与==

目录

  • == 运算符
    • 用途:用于比较两个引用是否指向同一个对象。
    • 比较内容:比较的是内存地址(引用)。
    • 适用范围:适用于基本数据类型和对象引用
  • equals() 方法
    • 用途:用于比较两个对象的内容是否相同。
    • 比较内容:比较的是对象的内容(值)。
    • 适用范围:适用于所有对象,但需要根据具体类的实现来判断。
  • 总结

在Java中,equals()方法和==运算符用于比较对象,但它们的用途和行为有所不同。

== 运算符

用途:用于比较两个引用是否指向同一个对象。

比较内容:比较的是内存地址(引用)。

适用范围:适用于基本数据类型和对象引用

示例

public class EqualsAndEquals {public static void main(String[] args) {// 基本数据类型int a = 5;int b = 5;// 输出 true,因为它们的值相等System.out.println(a == b); // 对象引用String str1 = new String("hello");String str2 = new String("hello");// 输出 false,因为它们是不同的对象System.out.println(str1 == str2);String str3 = "hello";String str4 = "hello";// 输出 true,因为它们指向相同的字符串常量池中的对象System.out.println(str3 == str4);}
}

equals() 方法

用途:用于比较两个对象的内容是否相同。

比较内容:比较的是对象的内容(值)。

适用范围:适用于所有对象,但需要根据具体类的实现来判断。

示例

public class EqualsClass {public static void main(String[] args) {// 对象引用String str1 = new String("hello");String str2 = new String("hello");// 输出 true,因为它们的内容相同System.out.println(str1.equals(str2)); // 自定义对象Person person1 = new Person("Alice", 25);Person person2 = new Person("Alice", 25);// 取决于 Person 类的 equals 方法实现System.out.println(person1.equals(person2)); }
}class Person {private String name;private int age;public Person(String name, int age) {this.name = name;this.age = age;}@Overridepublic boolean equals(Object obj) {if (this == obj) {return true;}if (obj == null || getClass() != obj.getClass()) {return false;}Person person = (Person) obj;return age == person.age && name.equals(person.name);}@Overridepublic int hashCode() {return Objects.hash(name, age);}
}

总结

  • == 运算符:比较两个引用是否指向同一个对象(内存地址)。
  • equals() 方法:比较两个对象的内容是否相同。

在实际开发中,如果需要比较两个对象的内容是否相同,应该使用equals()方法,而不是==运算符。对于基本数据类型的比较,==运算符是适用的。对于字符串比较,尤其是涉及到字符串常量池的情况,==运算符可能会产生误导,因此推荐使用equals()方法来比较字符串内容。

http://www.lryc.cn/news/423003.html

相关文章:

  • Ubuntu20.04 运行深蓝路径规划hw1
  • 企业如何组建安全稳定的跨国通信网络
  • WordPress原创插件:Download-block-plugin下载按钮图标美化
  • 前端【详解】缓存
  • P5821 【LK R-03】密码串匹配
  • httpx,一个网络请求的 Python 新宠儿
  • 计算机网络408考研 2014
  • JavaScript 资源大全中文版
  • 如何获取能直接在浏览器打开的播放地址?
  • 如何用 LangChain 实现一个Zero Shot智能决策器(附源码)
  • 读完这本书,我终于搞懂了Transformer、BERT和GPT!【附PDF】
  • 仿RabbitMq简易消息队列基础篇(Muduo库的使用)
  • .net SqlSugarHelper
  • “AI能不能代替某某职业”,到底谁在破防?
  • 智慧图书馆:构建高效视频智能管理方案,提升图书馆个性化服务
  • React快速开发框架
  • 【前端】记录各种控制台警告/bug
  • 猫咪掉毛严重怎么办?铲屎官家庭必备清理工具——宠物空气净化器
  • 顺序表的实现——数据结构
  • 【模块化】CommonJS,AMD规范,CMD规范,ES6模块化
  • 3.js - 顶点着色器、片元着色器的联系
  • kotlin简介
  • Mintegral出海系列:解锁全球应用商店新增长路径
  • Qt 哈希加密之 QCryptographicHash
  • 渗透第二次作业
  • 42.【C语言】冒泡排序
  • Linux安全与高级应用(七)深入Linux Shell脚本编程:循环与分支结构的高级应用
  • python爬虫滑块验证及各种加密函数(基于ddddocr进行的一层封装)
  • pytorch学习一(扩展篇):miniconda下载、安装、配置环境变量。miniconda创建多版本python环境。整理常用命令(亲测ok)
  • 说一下Android中的IdleHandler