簡體   English   中英

奇怪的 Groovy / Java 字符串比較行為

[英]Strange Groovy / Java String comparison behavior

考慮以下腳本:

def a = new HashSet()
def str1 = "str1"
def str2 = "str2"
def b = "$str1-$str2"
def c = "str1-str2"
println "b: $b"
println "c: $c"
println "b.equals(c): " + (b.equals(c))
println "b == c: " + (b == c)
println "b.compareTo(c): " + (b.compareTo(c))

a.add(b)
println "a.contains(c): " + a.contains(c)

當與 Groovy 1.8 和 JDK 1.6.0_14 一起運行時,它具有以下 output:

b: str1-str2                                                                                                               
c: str1-str2
b.equals(c): false
b == c: true
b.compareTo(c): 0
a.contains(c): false

兩個字符串 "b" 和 "c" 打印相同的字符序列,但 b.equals(c) 為假。 根據 JDK 1.6 手冊,equals() function 應該返回:

將此字符串與指定的 object 進行比較。 當且僅當參數不是 null 並且是表示與此 object 相同的字符序列的字符串 object 時,結果才為真。

為什么 equals() 不返回上面記錄和演示的值? 奇怪的是,compareTo() 返回 0!

該問題在Groovy GString 頁面上得到解答。 我需要在 GString 上調用 toString()。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM