精品偷拍一区二区三区,亚洲精品永久 码,亚洲综合日韩精品欧美国产,亚洲国产日韩a在线亚洲

  • <center id="usuqs"></center>
  • 
    
  • equals和==的區(qū)別

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

    “在堆中存儲的地址是否相同”和“堆中的內(nèi)容是否相同”有什么區(qū)別?總感覺是一個樣的阿.

    其他人氣:529 ℃時間:2020-05-17 11:13:54
    優(yōu)質(zhì)解答
    解釋一下==號,他比較的是一個對象在內(nèi)存中的地址值,
    比如2個字符串對象
    String s1 = new String("str");
    String s2 = new String("str");
    如果用==號比較,會返回false,因為創(chuàng)建了兩個對象,他們在內(nèi)存中地址的位置是不一樣的.
    equals的情況比較復(fù)雜,它是java.lang.Object類中的一個方法.因為java中所有的類都默認繼承于Object,所以所有的類都有這個方法.
    在Object類源碼中是這樣寫的.
    public boolean equals(Object obj) {
    return (this == obj);
    }
    他同樣使用==號進行內(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里的方法,如果==號比較不相等,還會進行一下值的比較.
    所以equals方法具體的作用要看當(dāng)前的那個類是如何實現(xiàn)重寫父類中該方法的.如果沒有重寫該方法,那么他和==號等價.
    我來回答
    類似推薦
    請使用1024x768 IE6.0或更高版本瀏覽器瀏覽本站點,以保證最佳閱讀效果。本頁提供作業(yè)小助手,一起搜作業(yè)以及作業(yè)好幫手最新版!
    版權(quán)所有 CopyRight © 2012-2024 作業(yè)小助手 All Rights Reserved. 手機版