1

私はこのコードを書きました:

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

なんで?

4

5 に答える 5

3

表示されている数字は、配列オブジェクトのハッシュ コードです

配列の内容を表示するには、次を使用しますArrays.toString()

System.out.println(Arrays.toString(test));
System.out.println(Arrays.toString(test2));
System.out.println(Arrays.toString(test3));
于 2012-12-13T18:00:05.037 に答える
1

String.valueOfにはbyte[]引数がないため、として処理されObjecttoString()メソッドが呼び出されます。配列はこのメソッドを実装していないため、Object.toString()は配列内で処理され、結果は各インスタンス。

Stringに変換する場合byte[]は、コンストラクター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]
于 2012-12-13T18:07:11.827 に答える
1

toString pf any array は、配列内の値を使用Arrays.toString(test);して、そのために使用できる文字列を作成しません

于 2012-12-13T18:00:19.837 に答える
0

ValueOf()toString()指定されたオブジェクトの呼び出しのみ。配列の内容を印刷したい場合は、Arrays.toString()代わりに使用してください。

于 2012-12-13T18:00:34.127 に答える
0

バイト配列には がないのでString.valueOf、 を与えるとbyte[]を使用しますString.valueOf(Object obj)

于 2012-12-13T18:03:04.580 に答える