“==”和equals()的區別

    ==是判斷兩個變量或實例是不是指向同一個內存空間,即地址是否相同
    equals是判斷兩個變量或實例所指向的內存空間的值是不是相同,即值是否相同

    除了String和封裝器,equals()和“==”沒什麼區別
    但String和封裝器重寫了equals(),所以在這裏面,equals()指比較字符串或封裝對象對應的原始值是否相等,"=="是比較兩個對象是否爲同一個對象

   具體實例如下所示:

/**
 * @Title: temp.java
 * @Package nlp
 * @Description: TODO
 * @author peidong
 * @date 2017-6-20 下午2:20:21
 * @version V1.0
 */
package nlp;

/**
 * @ClassName: temp
 * @Description: 比較“==”與“equals()”的區別
 * @date 2017-6-20 下午2:20:21
 *
 */
public class temp {

    /**
     * @Title: main
     * @Description: TODO
     * @param args
     * @return void
     * @throws
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        String a = new String("hello");
        String b = new String("hello");

        boolean res1 = (a == b);
        boolean res2 = (a.equals(b));
        System.out.println(res1);   #false
        System.out.println(res2);   # true

        String c = new String("ssss");
        String d = new String("ss");
        d += "ss";

        boolean res3 = (c ==d);
        boolean res4 = (c.equals(d));
        System.out.println(res3);   #false
        System.out.println(res4);   #true
//        "=="爲false是因爲用new創建對象時返回的引用時不相同的
        String s1 = "1";
        String s2 = "1";

        boolean res5 = (s1 == s2);
        boolean res6 = (s1.equals(s2));
        System.out.println(res5);   #true
        System.out.println(res6);   #true

        String s3 = "1";
        String s4 = s3;

        boolean res7 = (s3 == s4);
        boolean res8 = (s3.equals(s4));
        System.out.println(res7);   #true
        System.out.println(res8);   #true

        String s5 = "1";
        String s6 = new String("1");

        boolean res9 = (s5 ==s6);
        boolean res10 = (s5.equals(s6));
        System.out.println(res9);   #false
        System.out.println(res10);  #true
    }

}

發佈了110 篇原創文章 · 獲贊 65 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章