== 与 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对象

 

 

posted @ 2020-04-11 22:40  Coding-Liu  阅读(129)  评论(0)    收藏  举报