2012-08-28 164 views
1

當我們嘗試使用toString()打印任何對象時,我們得到了HashCode(如果toString()未被覆蓋)。但是,如果我想打印字符串變量的Hashcode,我該怎麼做。 這是關於Java的問題。字符串的散列碼

+5

'「abc」.hashCode()'? –

+0

「串變量的哈希碼」是什麼意思?爲什麼你不能簡單地在其上調用'hashCode()'? –

+0

'toString()'不會在默認情況下打印hashCode()。如果這是你想要的,你最好調用'hashCode()'。注意:它可能不是唯一的。 –

回答

8

就叫hashCode()String對象:

String s = "Hello World"; 
System.out.println(s.hashCode()); 

如果你想在相同的格式Object.toString(),試試這個:

System.out.println(Integer.toHexString(s.hashCode())); 
+2

更確切地說:'s.getClass()。getName()+「 @「+ Integer.toHexString(s.hashCode());' – assylias

+0

@assylias Yes ofourse:'」String @「+ Integer.toHexString(s.hashCode()));' – Jesper

+0

@Jesper:ok,hashCode()is對象類的成員。日Thnx。 –

2

您可以通過調用hashCode()方法來獲取任何Java對象的哈希碼。結果將是一個int,然後您可以打印或做任何你想要的東西。

如果您對Object.toString的實施感興趣,很容易在grepcode處查詢。它說:

public String toString() { 
    return getClass().getName() + "@" + Integer.toHexString(hashCode()); 
} 
2
System.out.println("Some String".hashCode()); 
1

簡單請撥打hashcode()方法。它來自Object

String str = "mystring"; 
System.out.println(str.hashCode());