通俗的理解
下面文字主要摘自:知乎问答
==是看看左右是不是一个东西。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类型会采用字符串匹配方法比较】