2011-09-21 166 views
2
System.out.println("hello world".getBytes("UTF-8")); 

偶爾會返回不同的值,爲什麼?String.getBytes()的結果不一致

對不起,我還是Java的noob。

+0

請告訴我們:(1)完整的編譯代碼; (2)你通常從中得到什麼; (3)你偶爾會得到什麼。 – NPE

+0

在同一臺機器上,使用相同的JVM? –

回答

5

此代碼打印一個數組(byte []),但沒有用Java打印標準數組。因此,代碼不是打印數組的內容,而是顯示一些隱藏的內存引用數組。例如「[B @ 6bbc4459」。這些信息不是非常有用,並且可能會在程序執行之間發生改變。

如果要顯示數組的內容,則必須遍歷它。

4

您正在打印字節數組上調用toString()的結果。那不會顯示你的內容,因爲數組不會覆蓋toString() - 它只是向你展示類似[[email protected]的地方,其中[B顯示它是一個字節數組,而@之後的值是一個哈希碼。

如果你想顯示的字節數組內容爲數字,你要像Arrays.toString

byte[] data = "hello world".getBytes("UTF-8"); 
System.out.println(Arrays.toString(data)); 
+0

感謝這個例子,歡呼聲 – user747912