Java中如何准确区分==与equals用法差异?

2026-05-24 10:570阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计923个文字,预计阅读时间需要4分钟。

Java中如何准确区分==与equals用法差异?

1. `equals` 方法用于比较对象的内容是否相等,而 `==` 比较的是对象的引用是否相同。

2.缺点在于直接使用 `==` 可能会导致错误的结果,因为两个对象可能有相同的值但不同的引用。

3.总结规则:

- 规则1:当比较基本数据类型时,使用 `==` 来比较值。 - 规则2:当比较对象时,使用 `equals` 方法来比较内容。 - 规则3:如果自定义类,应重写 `equals` 方法以确保正确比较对象内容。

网上搜了一遍,对于==和equals的表达感觉不全面;总感觉缺点什么;今天把这个比较总结出来三条规律。

结论1.基本类型没有equals方法,只有==比较,比较的是值。

结论2.所有对象的==比较都是内存地址的比较

(上面的两点简单不介绍了)

首先我们看Integer类的比较。

Integer a=1000; Integer b=1000; System.out.println(a == b);//false System.out.println(a.equals(b));//true

因为a和b都是对象类型,所以都有自己的堆内存地址,所以根据结论2得出a==b是false。

至于equals我们看一下源码

很明显Integer的equals比较的是值。所以网上有些说法:equals比较的是内存地址的说法是以偏概全的;这个equals的比较要根据当前类的equals的实现。

所以a.equals(b)是值的比较。

阅读全文

本文共计923个文字,预计阅读时间需要4分钟。

Java中如何准确区分==与equals用法差异?

1. `equals` 方法用于比较对象的内容是否相等,而 `==` 比较的是对象的引用是否相同。

2.缺点在于直接使用 `==` 可能会导致错误的结果,因为两个对象可能有相同的值但不同的引用。

3.总结规则:

- 规则1:当比较基本数据类型时,使用 `==` 来比较值。 - 规则2:当比较对象时,使用 `equals` 方法来比较内容。 - 规则3:如果自定义类,应重写 `equals` 方法以确保正确比较对象内容。

网上搜了一遍,对于==和equals的表达感觉不全面;总感觉缺点什么;今天把这个比较总结出来三条规律。

结论1.基本类型没有equals方法,只有==比较,比较的是值。

结论2.所有对象的==比较都是内存地址的比较

(上面的两点简单不介绍了)

首先我们看Integer类的比较。

Integer a=1000; Integer b=1000; System.out.println(a == b);//false System.out.println(a.equals(b));//true

因为a和b都是对象类型,所以都有自己的堆内存地址,所以根据结论2得出a==b是false。

至于equals我们看一下源码

很明显Integer的equals比较的是值。所以网上有些说法:equals比较的是内存地址的说法是以偏概全的;这个equals的比较要根据当前类的equals的实现。

所以a.equals(b)是值的比较。

阅读全文