一、==
基本类型:==比较的是值是否相同;
引用类型:==比较的是两个引用是否指向同一个对象;
代码示例:
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条评论
点击登录参与评论