== 与 equals
==:
比较两个对象的地址是否相等,即判断两个对象是否是同一个对象,引用类型比较的是地址,基本类型比较的值
equals:
equals源码实质上 ==,只不过有些类覆盖equals,所以有两种情况“
1,未覆盖,equals的比较等价与"=="
2,覆盖(String、Integer等),一般覆盖equals是为了比较两个对象的内容是否相等,相等为true。
public class Solution{
public static void main(String[] args) {
String a = new String("ab"); //a为一个引用
String b = new String("ab"); //b为另一个引用,对象内容相等
String aa = "ab"; //放在常量池中
String bb = "ab"; //从常量池中查找
System.out.println(a == b); // false 非同一对象
System.out.println(a.equals(b)); //true
System.out.println(42 == 42.0); //true
}
}
说明:
1,String中的equals()被重写了,因为object中equals是比较对象的内存地址,而String中是要比较值
2,当创建String常量时,虚拟机会在常量池中查找是否有该常量,有就引用,没有就会在常量池中创建新的String对象

浙公网安备 33010602011771号