gpt4 book ai didi

java - Java 编程语言中的编码

转载 作者:行者123 更新时间:2023-11-29 07:51:20 26 4
gpt4 key购买 nike

请参阅JLS7 .第 3.2 节第 16 页状态

The Java programming language represents text in sequences of 16-bit code units, using the UTF-16 encoding.

我反汇编了一个 hello world 程序。

class Y {
String hello = "hello";
}

程序集如下:

Classfile /c:/Work/SR1/e2/tmp/Y.class
Last modified Jan 5, 2014; size 240 bytes
MD5 checksum 96694fda4f346a62d5412c56dc36c45d
Compiled from "X.java"
class Y
SourceFile: "X.java"
minor version: 0
major version: 52
flags: ACC_SUPER
Constant pool:
#1 = Class #2 // Y
#2 = Utf8 Y
#3 = Class #4 // java/lang/Object
#4 = Utf8 java/lang/Object
#5 = Utf8 hello
#6 = Utf8 Ljava/lang/String;
#7 = Utf8 <init>
#8 = Utf8 ()V
#9 = Utf8 Code
#10 = Methodref #3.#11 // java/lang/Object."<init>":()V
#11 = NameAndType #7:#8 // "<init>":()V
#12 = String #5 // hello
#13 = Fieldref #1.#14 // Y.hello:Ljava/lang/String;
#14 = NameAndType #5:#6 // hello:Ljava/lang/String;
#15 = Utf8 LineNumberTable
#16 = Utf8 SourceFile
#17 = Utf8 X.java
{
...

我只看到 Utf8 编码,没有看到 Utf16。为什么没有utf16编码。

谢谢

最佳答案

在一个正在执行的程序中,文本(通常是1)以 UTF-16 表示。

但在“.class”文件中,常量池中的文本(即字符串文字、标识符等)以 UTF-8 编码以节省空间。 (UTF-8 中常量池条目的编码由 JVM spec - Section 4.4 强制...与默认字符集无关。)

加载类文件时,类加载器将 UTF-8 常量池条目转码为 UTF-16。


1 - 可以编写应用程序以多种不同方式对文本进行编码。我们这里所说的 UTF-16 编码是 Java 中文本数据的自然编码方案;即当您将文本存储为 StringCharacterSequence 的任何其他子类型时获得的编码。

关于java - Java 编程语言中的编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20930017/

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