2021-09-04 20:06

最新Java程序员经典面试题大全(二) - == 和 equals 的区别是什么?

王姐姐

职场

(1106)

(0)

收藏

一、==

基本类型:==比较的是值是否相同;

引用类型:==比较的是两个引用是否指向同一个对象;

代码示例:

String x = "wanmait"; 
String y = "wanmait"; 
String z = new String("wanmait"); 
System.out.println(x==y); // true 
System.out.println(x==z); // false 
System.out.println(x.equals(y)); // true 
System.out.println(x.equals(z)); // true

因为 x 和 y 指向的是同一个引用,所以 == 也是 true,而 new String()方法则重写开辟了内存空间,所以 == 结果为 false,而 equals 比较的一直是值,所以结果都为 true。

二、equals

equals()是Object类的一个方法。

equals 本质上就是 ==,只不过 String 和 Integer 等重写了 equals 方法,把它变成了值比较。

注意:equals()方法比较返回相等的对象需要有相同的hashCode()值。

三、总结 

== 对于基本类型来说是值比较,对于引用类型来说是比较的是引用;而 equals 默认情况下是引用比较,只是很多类重写了 equals 方法,比如 String、Integer 等把它变成了值比较,所以一般情况下 equals 比较的是值是否相等。


0条评论

点击登录参与评论