[B @ означает «байтовый массив». Другие типы примитивных массивов имеют разные префиксы:
class Test
{
public static void main(String [] args)
{
byte[] b = new byte[0];
int[] i = new int[0];
char[] c = new char[0];
long[] l = new long[0];
double[] d = new double[0];
float[] f = new float[0];
short[] s = new short[0];
System.out.println(b);
System.out.println(i);
System.out.println(c.toString());
System.out.println(l);
System.out.println(d);
System.out.println(f);
System.out.println(s);
}
}
Печать:
[B@3e25a5
[I@19821f
[C@addbf1
[J@42e816
[D@9304b1
[F@190d11
[S@a90653
Непримитивные типы включают имя типа после [L
, например:
[Ljava.lang.String;@a90653
[Ljava.lang.Object;@de6ced
Если вы хотите напечатать содержимое байтового массива в шестнадцатеричном виде, вот код, который вам поможет:
class Test
{
public static void main(String [] args)
{
byte[] b = new byte[] { (byte) 0xf3, (byte) 0xf1, (byte) 0x7f };
System.out.println(toHex(b));
}
private static final char[] HEX_DIGITS = "0123456789abcdef".toCharArray();
public static String toHex(byte[] bytes)
{
char[] c = new char[bytes.length*2];
int index = 0;
for (byte b : bytes)
{
c[index++] = HEX_DIGITS[(b >> 4) & 0xf];
c[index++] = HEX_DIGITS[b & 0xf];
}
return new String(c);
}
}