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

[Java、Android面试]_10_Java中==与equal()方法的区别?重写equal()方法?

==与equal()方法的区别?是一个高频考点,资料整理如下:

文章目录

    • 1. "=="的介绍
    • 2. .equal的介绍

本人今年参加了很多面试,也有幸拿到了一些大厂的offer,整理了众多面试资料,后续还会分享众多面试资料。

整理成了面试系列,由于时间有限,每天整理一点,后续会陆续分享出来,感兴趣的朋友可关注+收藏

1. "=="的介绍

如果是八种基本类型,则比较的是值是否相等;
如果是引用类型,比较的是地址是否相等;

2. .equal的介绍

(1).equal不能用于基本类型;
(2)如果是引用类型,比较的是地址;另外,有些会重写.equal()
方法,如String、Date,这时是比较的值是否相等。
(3)重写euqal方法
要确保 equals() 方法遵循传递性、自反性、对称性和一致性原则,即满足 a == b,b ==c,
则 a == c。

重写 equals() 方法时,通常也需要重写 hashCode() 方法,以保持对象在散列数据结
构中的正确行为

如:

1.data class Person(val name: String, val age: Int) {
2.    override fun equals(other: Any?): Boolean {
3.        if (this === other) return true
4.        if (other !is Person) return false
5.
6.        return name == other.name && age == other.age
7.    }
8.    // 重写hashCode(),保持对象在散列结构中的正确行为。
9.    override fun hashCode(): Int {
10.        return 31 * name.hashCode() + age
11.    }
12.}

在此示例中,equals() 方法根据 name 和 age 属性来判断两个 Person 对象是否相等,而 hashCode() 方法使用 name 的哈希码和 age 相加作为哈希码。

相关文章:

  • Redisson 分布式锁原理分析
  • 智能合约 之 ERC-20介绍
  • vue-admin-template极简的 vue admin 管理后台的动态路由实现方法
  • 002_avoid_for_loop_in_Matlab避免使用for循环
  • Session、Cookie 和 Token的保存
  • 【蓝桥杯选拔赛真题72】python输出整数 第十五届青少年组蓝桥杯python选拔赛真题 算法思维真题解析
  • 软件测试教程 自动化测试之Junit框架
  • 网络安全进入AI赋能时代
  • 记录C++中,子类同名属性并不能完全覆盖父类属性的问题
  • Linux编程3.8 进程-守护进程
  • nodejs中使用@maxmind/geoip2-node 查询地理位置信息
  • MySQL的进阶使用方法
  • 3D开发工具HOOPS如何助力3D项目实现扩展现实技术?
  • Trait与生命周期
  • 学习vue3 第四章(reactive全家桶)
  • ----------
  • 时间复杂度分析经典问题——最大子序列和
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • EventListener原理
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • Java小白进阶笔记(3)-初级面向对象
  • learning koa2.x
  • React-redux的原理以及使用
  • storm drpc实例
  • vue.js框架原理浅析
  • Web设计流程优化:网页效果图设计新思路
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 机器学习中为什么要做归一化normalization
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 数据科学 第 3 章 11 字符串处理
  • 异常机制详解
  • 由插件封装引出的一丢丢思考
  • nb
  • FaaS 的简单实践
  • Play Store发现SimBad恶意软件,1.5亿Android用户成受害者 ...
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • !$boo在php中什么意思,php前戏
  • $.proxy和$.extend
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (4) PIVOT 和 UPIVOT 的使用
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (分布式缓存)Redis持久化
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (十)T检验-第一部分
  • (十一)手动添加用户和文件的特殊权限
  • (一一四)第九章编程练习
  • (原創) 系統分析和系統設計有什麼差別? (OO)
  • (转)memcache、redis缓存
  • .\OBJ\test1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'
  • .gitignore文件_Git:.gitignore
  • .NET 8.0 中有哪些新的变化?
  • .NET命令行(CLI)常用命令
  • /run/containerd/containerd.sock connect: connection refused
  • @Autowired自动装配