精品丰满熟女一区二区三区_五月天亚洲欧美综合网_亚洲青青青在线观看_国产一区二区精选

  • <menu id="29e66"></menu>

    <bdo id="29e66"><mark id="29e66"><legend id="29e66"></legend></mark></bdo>

  • <pre id="29e66"><tt id="29e66"><rt id="29e66"></rt></tt></pre>

      <label id="29e66"></label><address id="29e66"><mark id="29e66"><strike id="29e66"></strike></mark></address>
      學(xué)習(xí)啦 > 知識大全 > 知識百科 > 公共基礎(chǔ)知識 > ==和equals的區(qū)別

      ==和equals的區(qū)別

      時間: 映芳735 分享

      ==和equals的區(qū)別

        ==操作比較的是兩個變量的值是否相等,對于引用型變量表示的是兩個變量在堆中存儲的地址是否相同,即棧中的內(nèi)容是否相同。

        比較的是一個對象在內(nèi)存中的地址值,

        比如2個字符串對象

        String s1 = new String("str");

        String s2 = new String("str");

        如果用==號比較,會返回false,因為創(chuàng)建了兩個對象,他們在內(nèi)存中地址的位置是不一樣的。

        equals操作表示的兩個變量是否是對同一個對象的引用,即堆中的內(nèi)容是否相同。

        equals的情況比較復(fù)雜,它是java.lang.Object類中的一個方法。因為java中所有的類都默認(rèn)繼承于Object,所以所有的類都有這個方法。

        在Object類源碼中是這樣寫的。

        public boolean equals(Object obj) {

        return (this == obj);

        }

        他同樣使用==號進(jìn)行內(nèi)存地址的比較。但是許多java類中都重寫了這個方法,比如String。

        public boolean equals(Object anObject) {

        if (this == anObject) {

        return true;

        }

        if (anObject instanceof String) {

        String anotherString = (String)anObject;

        int n = count;

        if (n == anotherString.count) {

        char v1[] = value;

        char v2[] = anotherString.value;

        int i = offset;

        int j = anotherString.offset;

        while (n-- != 0) {

        if (v1[i++] != v2[j++])

        return false;

        }

        return true;

        }

        }

        return false;

        }

        String里的方法,如果==號比較不相等,還會進(jìn)行一下值的比較。

        所以equals方法具體的作用要看當(dāng)前的那個類是如何實現(xiàn)重寫父類中該方法的。如果沒有重寫該方法,那么他和==號等價。

      530126