"== "与 equals

== : 它的作用是判断两个对象的地址是不是相等,就是判断两个对象是不是同一个对象。注:(基本数据类型==比较的是 值,引用数据类型==比较的是内存地址)

equals() : 它的作用也是判断两个对象是否相等。但它一般有两种使用情况:

  1.类没有覆盖 equals() 方法。则通过 equals() 比较该类的两个对象时,等价于通过“==”比较这两个对象。

  2.类覆盖了 equals() 方法。一般,我们都覆盖 equals() 方法来两个对象的内容相等;若它们的内容相 等,则返回 true (即,认为这两个对象相等)。

 

/**
 *  "== "与 equals
 * @author fereli
 */
public class test {
    public static void main(String[] args) {
        String a = new String("ab");//new 新的对象 a
        String b = new String("ab");//new 新的对象 b 但是内容和a一样
        String aa = "ab";   //放在常量池中
        String bb = "ab";   //从常量池中查找 所有地址值和aa相同

        if (aa==bb){//true
            System.out.println("aa==bb");
        }
        if (a==b){//false
            System.out.println("aa=bb");
        }
        if (a.equals(b)){//true
            System.out.println("a.equals(b)");
        }
    }
}

  说明:

    String 中的 equals 方法是被重写过的,因为 object 的 equals 方法是比较的对象的内存地址,而 String 的 equals 方法比较的是对象的值。

   当创建 String 类型的对象时,虚拟机会在常量池中查找有没有已经存在的值和要创建的值相同的对象,如果有 就把它赋给当前引用。如果没有就在常量池中重新创建一个 String 对象。

猜你喜欢

转载自www.cnblogs.com/Fereli/p/11980308.html