Java: Syntax and meaning behind "[B@1ef9157"? Binary/Address?

binary, hex, java, syntax

Solution

You're looking at the object ID, not a dump of the contents.

- The [ means array.

- The B means byte.

- The @ separates the type from the ID.

- The hex digits are an object ID or hashcode.

If the intent is to print the contents of the array, there are many ways. For example:

byte[] in = new byte[] { 1, 2, 3, -1, -2, -3 };
System.out.println(byteArrayToString(in));

String byteArrayToString(byte[] in) {
    char out[] = new char[in.length * 2];
    for (int i = 0; i < in.length; i++) {
        out[i * 2] = "0123456789ABCDEF".charAt((in[i] >> 4) & 15);
        out[i * 2 + 1] = "0123456789ABCDEF".charAt(in[i] & 15);
    }
    return new String(out);
}

A complete list of the type nomenclature can be found in the JNI documentation.

Here is the entire list:

- B - byte

- C - char

- D - double

- F - float

- I - int

- J - long

- L***fully-qualified-class*;** - between an `L` and a `;` is the full class name, using `/` as the delimiter between packages (for example, `Ljava/lang/String;`)

- S - short

- Z - boolean

- [ - one `[` for every dimension of the array

- (***argument types*)***return-type* - method signature, such as `(I)V`, with the additional pseudo-type of `V` for void method

Problem

Hey, I'm trying to figure out what the [B@ prefix means in java. They come out when I attempt to print byte arrays. However, byte arrays of size 32 and size 4 are identical in length. Always "[@B1234567". What is this? Also, they have the property of only printing hex values. I know it can't just be a binary print because random extended ascii chars would appear. Here is an example of a byte[] to byte[] hashtable mapping print, where mappings are separated by a colon, and these are byte arrays of 4-byte keys and 32-byte elements. ``` [B@1ef9157:[B@1f82982 [B@181ed9e:[B@16d2633 [B@27e353:[B@e70e30 [B@cb6009:[B@154864a [B@18aaa1e:[B@3c9217 [B@20be79:[B@9b42e6 [B@16925b0:[B@14520eb [B@8ee016:[B@1742700 [B@1bfc93a:[B@acb158 [B@107ebe1:[B@1af33d6 [B@156b6b9:[B@17431b9 [B@139b78e:[B@16c79d7 [B@2e7820:[B@b33d0a [B@82701e:[B@16c9867 [B@1f14ceb:[B@89cc5e [B@da4b71:[B@c837cd [B@ab853b:[B@c79809 [B@765a16:[B@1ce784b [B@1319c:[B@3bc473 ```

Original source