用Java编程语言编码

 9baibai_555 发布于 2023-02-06 15:03

请参阅JLS7.第3.2节第16页说明

Java编程语言使用UTF-16编码表示16位代码单元序列中的文本.

我拆开了一个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               
  #8 = Utf8               ()V
  #9 = Utf8               Code
  #10 = Methodref          #3.#11         //  java/lang/Object."":()V
  #11 = NameAndType        #7:#8          //  "":()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 个回答
  • 在执行程序中,文本(通常为1)以UTF-16表示.

    但是在".class"文件中,常量池中的文本(即字符串文字,标识符等)以UTF-8编码以节省空间.(UTF-8中的常量池条目的编码是由JVM规范强制执行的- 第4.4节 ......并且与默认字符集无关.)

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


    1 - 可以编写一个应用程序来以各种不同的方式编码文本.我们在这里讨论的UTF-16编码是Java中文本数据的自然编码方案; 即存储文本a String或任何其他子类型时获得的编码CharacterSequence.

    2023-02-06 15:05 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有