java中equals与==的使用
Posted phililps
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中equals与==的使用相关的知识,希望对你有一定的参考价值。
下面用个小例子记录一下
package lianxi1; public class lianxi1 { public static void main(String[] args) { String s1 = "chaoren"; String s2 = "chaoren"; String s3 = new String("chaoren"); System.out.println(s1 == s2); System.out.println(s1 == s3); System.out.println(s1.equals(s3)); } }
对应的结果是
true
false
true
“==”比较的是2个数据引用的是否是同一位置,equals比较的是内容是否一样。
这里有一点需要了解在Object中的基类中定义了一个equals的方法,这个方法的初始行为是比较对象的内存地 址,
但在一些类库当中这个方法被覆盖掉了,如String,Integer,Date在这些类当中equals有其自身的实现,而不再是比较类在堆内存中的存放地址了。
在以后熟悉做项目时候,你会发现只要是自己的生成的实体类中都会重写equals方法。
这里的s2和s1引用的同一个位置,所以比较为true。
s3是新生成的一个对象,只能在equals的情况下才为true。
以上是关于java中equals与==的使用的主要内容,如果未能解决你的问题,请参考以下文章
Java equals 方法与hashcode 方法的深入解析
leetcode_1292. Maximum Side Length of a Square with Sum Less than or Equal to Threshold_[二维前缀和](代码片段