当前位置: 首页 > 面试题库 >

Java:“ [B @ 1ef9157””后面的语法和含义是什么?二进制/地址?

澹台展鹏
2023-03-14
问题内容

我试图弄清楚[B @前缀在Java中的含义。 它们在我尝试打印字节数组时出来。但是,大小为32和大小为4的字节数组的长度相同。始终为“ [@ B1234567”。

这是什么?同样,它们具有仅打印十六进制值的属性。我知道它不能只是二进制打印,因为会出现随机扩展的ascii字符。

这是从byte []到byte []哈希表映射打印的html" target="_blank">示例,其中映射之间用冒号分隔,这些映射是4字节键和32字节元素的字节数组。

[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

问题答案:

你正在查看的是对象ID,而不是内容的转储。

  • The [ means array.
  • The B means byte.
  • The @ separates the type from the ID.
  • The hex digits are an object ID or hashcode.

如果要打印数组的内容,则有很多方法。例如:

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);
}

一个完整的列表类型命名的可以在中找到JNI文档。

这是整个列表:
- B - byte
- C - char
- D - double
- F - float
- I - int
- J - long
- Lfully-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




 类似资料:
  • 问题内容: 我迅速在Google上找到了答案,但找不到/认为准确的搜索参数。 我正在自学Java,但似乎找不到某种语法的含义。 这意味着什么?我模糊地记得箭头括号与向量有关,但是根据上面的代码,我感觉到它与枚举有关。 任何帮助或澄清将不胜感激。谢谢。 问题答案: 这些称为泛型。 通常,这些在定义类,接口和方法时使 类型 (类和接口)成为参数。 与使用非泛型代码相比,使用泛型有很多好处,如Java教

  • 我尝试在浏览控制台中测试此语法,但遇到错误: 对于上面的代码,我关心的是是否会引发任何错误。

  • 问题内容: 我正在研究将数据存储在mongodb中的示例Go应用程序。这行代码(https://github.com/zeebo/gostbook/blob/master/context.go#L36)似乎访问了存储在大猩猩会话中的用户ID: 有人可以在这里给我解释一下语法吗?我知道这可以从会话中获取价值,但是接下来的部分是什么呢?为什么括号中的点后面是表达式?这是函数调用吗? 问题答案: 是,括

  • 问题内容: 运行Java 1.6(1.6.0_03-b05)应用程序时,我添加了该标志。在某些方法的输出上,尤其是我所知道的一些方法被称为很多,我看到了文本和。 这些是什么意思?最好的猜测是,在重新编译该方法或优化程度更高的依赖项之前,这是一个反编译步骤。真的吗?为什么是“僵尸”和“进入者”? 示例,其中一些行之间有很多时间: 问题答案: 我已经在自己的博客上整理了一些相关信息。我发现的Cliff

  • 问题内容: Java中“ this”的含义是什么? 问题答案: this 指当前对象 每个非静态方法都在对象的上下文中运行。因此,如果你有这样的课程: 然后调用上会打印 因此,有效地将它用于多种用途: 澄清你在谈论一个字段,当还有其他与该字段同名的东西时 整体引用当前对象 在构造函数中调用当前类的其他构造函数

  • 问题内容: 这个静态函数是来自名称空间的类中的吗? 我该如何解释这个名字?在JRE中的哪个位置定义了此功能?在/ ? 问题答案: 否。实际上是类中的静态成员(不是.NET中的静态成员),它是。的实例。并且是该类的常规(重载)方法。 请参阅http://download.oracle.com/javase/6/docs/api/java/lang/System.html#out。 其实,如果/ /