簡體   English   中英

java String.valueOf問題

[英]java String.valueOf issue

我寫了這段代碼:

byte[] test = {-51};
byte[] test2 = {-51};
byte[] test3 = {-51};
System.out.println(String.valueOf(test));
System.out.println(String.valueOf(test2));
System.out.println(String.valueOf(test3));

而且我得到了不同的結果:

[B@9304b1
[B@190d11
[B@a90653

為什么?

您看到的數字是數組對象哈希碼

要查看數組的內容,請使用Arrays.toString()

System.out.println(Arrays.toString(test));
System.out.println(Arrays.toString(test2));
System.out.println(Arrays.toString(test3));

任何數組中的toString都不使用數組中的值來創建字符串,可以使用Arrays.toString(test); 為了那個原因

String.valueOf沒有byte []參數,因此它將作為Object處理,並且將調用toString()方法,因為數組未實現此方法,因此Object.toString()將在數組中處理,並且結果因實例而異。

如果要將byte[]轉換為String,請使用構造函數String(byte [])String(byte [] bytes,Charset charset)

byte[] test = {-51};
byte[] test2 = {-51};
byte[] test3 = {-51};
System.out.println(new String(test));
System.out.println(new String(test2));
System.out.println(new String(test3));

結果:

Í
Í
Í

如果要查看數組的內容,請使用Arrays.toString(byte [])

byte[] test = {-51};
byte[] test2 = {-51};
byte[] test3 = {-51};
System.out.println(Arrays.toString(test));
System.out.println(Arrays.toString(test2));
System.out.println(Arrays.toString(test3));

結果:

[-51]
[-51]
[-51]

ValueOf()只是調用給定對象的toString() 如果要打印數組的內容,請使用Arrays.toString()

因為字節數組沒有String.valueOf ,所以當給它byte[] ,它使用String.valueOf(Object obj)

暫無
暫無

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

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