gpt4 book ai didi

Java String 内部表示

转载 作者:行者123 更新时间:2023-11-30 06:10:56 25 4
gpt4 key购买 nike

据我所知,Java 对 String 的内部表示是 UTF-16。 What is java string representation?

此外,我知道在 UTF-16 字符串中,每个“字符”都使用一个或两个 16 位代码单元进行编码。

但是,当我调试下面的java代码时

String hello = "Hello";

变量 hello 是一个 5 字节的数组 0x48, 0x101, 0x108, 0x108, 0x111这是“你好”的 ASCII。

这怎么可能?

最佳答案

我用这段代码获取了一个迷你 java 进程的 gcore 转储:

 class Hi {
public static void main(String args[]) {
String hello = "Hello";
try {
Thread.sleep(60_000);
} catch (InterruptedException e) {
e.printStackTrace();
}

}
}

并在 Ubuntu 上做了一个 gcore 内存转储。 (使用 jps 获取 pid 并将其传递给 gcore)

如果使用 Hexeditor 在转储中找到:48 65 6C 6C 6F,那么它在内存中的某处为 ASCII。

还有 48 00 65 00 6C 00 6C,它是 StringUTF-16 表示的一部分

关于Java String 内部表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35032018/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com