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 中)。
添加回答
舉報