java -- 如何记住"=="与equals的区别?

时间:2021-01-10 16:21:48

通俗的理解

下面文字主要摘自:知乎问答

==是看看左右是不是一个东西。equals是看看左右是不是长得一样。

术语来讲的区别
1.==是判断两个变量或实例是不是指向同一个内存空间
equals是判断两个变量或实例所指向的内存空间的值是不是相同
2.==是指对内存地址进行比较
equals()是对字符串的内容进行比较
3.==指引用是否相同
equals()指的是值是否相同
补充
4. == 可以用来比较基本类型。(int,double,等等)
5. equals()的存在,是为了让用户自己去定义所谓的相等。(标准在开发者心中)

代码示例

基本类型举例

int a = 1;
int b =1;
a==b;//真

String,对象,基本类型两面性

  • string在”==”以及”equals()”规则上是一致的
String str1 = "data";
String str2 = "data";
str1 == str2;//真
str1.equals(str2);//真

对象类型

StringBuilder sb1 = new StringBuilder("hello");
StringBuilder sb2 = new StringBuilder(sb1.toString());
sb1 == sb2 //假
sb1.equals(sb2)//假
sb1.toString().equals(sb2.toString());//真【string类型会采用字符串匹配方法比较】