Java 中 == 与equals() 的区别详解
== 与 equals()的区别可以说是一个被问烂的面试题,但这个确实在工作中十分实用,往往会因为我们的判断错误导致空指针问题的产生,下面我们一起来了解一下他们的区别。
==
-
对于基本数据类型,我们只能使用==来判断两个数据的值是否相等
-
对于一个基本数据类型,一个包装类型,也是会比较值的
int a1 = 1;
Integer a2= 1;
a1 == a2; 结果为true
-
对于字符串来说
String s1 = "Jie";
String s2 = "Jie"; s2首先会查看内存是否有Jie这个字符串,如果有直接指向s2
s1 == s2; 结果为true
String s3 = new String("Jie"); 会直接开辟新空间,创建全新对象
S1 == s3; 结果为false
equals()
-
对于基本数据类型,没有equals()方法
-
对于引用数据类型,继承自Object类的equals()方法
默认比较内存地址
如String、Integer 之类都是重写了equals()方法,使其比较值
\