== 和 equals 有什么区别?

1、典型回答

== 用于基础数据类型时,是用来比较两个变量的值是否相等的,而对于引用类型来说,是用来比较两个对象的引用是否相同的。而 equals 默认是比较两个对象的引用是否相同的,但大部分时候都会被重写为比较两个对象的值是否相同。

例如,对于 Object 来说,== 和 equals 都是一样的,都是用来对比两个对象的引用是否相同的,而 String 或 Integer 等类中,又重写 equals 让其变成了比较值是否相同(而非引用是否相同)

所以,我们通常会使用 == 来对比两个对象的引用是否相同,而使用 equals 对比两个值是否相同(前提条件是重写了 equals 方法)

2、全面剖析

对于 Object 方法,equals 方法底层实现就是“==”,如下源码所示:

所以,对于 Object 对象来说,equals 和 == 都是一样的,都是比较对象的引用是否相同

但是 Integer 中的 equals 实现源码如下:

从上述源码可以看出,Integer 中会先将 Integer 对象转换成基础类型 int 值来进行比较,所以此时就不再是对比两个对象的引用了,而是对比两个对象的值是否相等

String 中的 equals 实现源码如下:

 从 String 中的 equals 中可以看出,它和 Integer 一样,是将 Object 中的引用比较重写成了值比较了

3、知识扩展

如何实现自定义 equals 方法?

如果是我们的业务类中想要重写 equals 方法,实现对象值的比较(非引用),可以这样实现:

​​​​​​​

相关推荐

  1. equals==什么区别

    2024-03-13 13:26:02       39 阅读
  2. “==“ equals 方法究竟什么区别

    2024-03-13 13:26:02       35 阅读
  3. == equals区别什么

    2024-03-13 13:26:02       47 阅读
  4. 【== equals区别什么?】

    2024-03-13 13:26:02       31 阅读
  5. “==”equals”的区别

    2024-03-13 13:26:02       61 阅读
  6. == equals区别

    2024-03-13 13:26:02       64 阅读
  7. C# 中 == Equals区别

    2024-03-13 13:26:02       38 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-13 13:26:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-13 13:26:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-13 13:26:02       82 阅读
  4. Python语言-面向对象

    2024-03-13 13:26:02       91 阅读

热门阅读

  1. Golang 自定义时间结构体支持Json&Gorm

    2024-03-13 13:26:02       47 阅读
  2. 深度学习如何入门?

    2024-03-13 13:26:02       40 阅读
  3. 蓝桥杯2023年-景区导游(倍增法求LCA)

    2024-03-13 13:26:02       43 阅读
  4. proxy

    2024-03-13 13:26:02       42 阅读
  5. C# TCP通信机制

    2024-03-13 13:26:02       44 阅读
  6. mysql

    mysql

    2024-03-13 13:26:02      37 阅读
  7. TIM定时器

    2024-03-13 13:26:02       39 阅读
  8. 使用Docker搭建Jellyfin

    2024-03-13 13:26:02       61 阅读
  9. 设计一个生产制造系统100问?

    2024-03-13 13:26:02       36 阅读
  10. Linux异步通知简介

    2024-03-13 13:26:02       47 阅读
  11. Linux无分区表

    2024-03-13 13:26:02       47 阅读
  12. ceph 换盘扩容

    2024-03-13 13:26:02       42 阅读