第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

typecast "(String)anObject" 和 anotherString.value.

typecast "(String)anObject" 和 anotherString.value.

神不在的星期二 2023-06-08 19:15:48
我正在探索我在 equals 方法中遇到的 Java 中的 String API首先,if (anObject instanceof String) {    String anotherString = (String)anObject;即使在檢查了一個對象的 instanceOf String 之后,它已經(jīng)在該條件下進行了類型轉(zhuǎn)換,您能否幫助我理解這一點。第二,String anotherString = (String)anObject;int n = value.length;if (n == anotherString.value.length)這里我們?yōu)槭裁碼notherString.value.length不使用anotherString.length我嘗試了多種來源JLS,例如Herbert SchildtBook,但無法真正破譯它。請幫助我更好地理解這一點。public boolean equals(Object anObject) {    if (this == anObject) {        return true;    }    if (anObject instanceof String) {        String anotherString = (String)anObject;        int n = value.length;        if (n == anotherString.value.length) {            char v1[] = value;            char v2[] = anotherString.value;            int i = 0;            while (n-- != 0) {                if (v1[i] != v2[i])                    return false;                i++;            }            return true;        }    }    return false;}
查看完整描述

1 回答

?
森欄

TA貢獻1810條經(jīng)驗 獲得超5個贊

即使在檢查了一個對象的 instanceOf String 之后,它已經(jīng)在該條件下進行了類型轉(zhuǎn)換,您能否幫助我理解這一點。

無論檢查如何instanceof,您都不能將 type 的值分配Object給 type 的變量String。所以anObject必須進行類型轉(zhuǎn)換以確保編譯器沒問題。(至少有一種語言——TypeScript——其編譯器能夠根據(jù)檢查推斷出賦值是正確的instanceof,但 Java 的編譯器還沒有這樣做……還沒有。)

這里為什么我們使用 anotherString.value.length 而不是 anotherString.length

value是包含實際字符串?dāng)?shù)據(jù)的對象中的實例成員String(作為char[]byte[]數(shù)組;它char[]在 JDK 1-8 中,它byte[]在 JDK 9+ 中)。使用它是有意義的,value.length因為這是數(shù)組的長度;如果value兩個字符串的 s 長度不同,則它們不能相等。使用anotherString.length()將需要一個無意義的方法調(diào)用(記住,publiclength是一個方法,而不是一個字段),無論如何它最終都會查看value.length(加上一些開銷,至少在 JDK11 中)。


查看完整回答
反對 回復(fù) 2023-06-08
  • 1 回答
  • 0 關(guān)注
  • 154 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號