首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JLS 3.1 Unicode中的"text“指的是什么?

JLS 3.1 Unicode中的"text“指的是什么?
EN

Stack Overflow用户
提问于 2021-01-14 21:43:55
回答 1查看 45关注 0票数 1

JLS的3.1 Unicode部分指出:

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

“文本”指什么?

我想知道这是否指

  • 存储在String对象中的内容?
  • 源代码作为一个整体传递给编译器,这意味着这是编译器的一条指令,它必须做的第一件事是在进一步处理源代码之前将源代码内部转换为UTF-16?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-14 23:26:43

这句话指的是如何用Java程序来表示文本数据,即String和相关类型。

然而,一个人需要小心,不要阅读太多的这一点。

  1. 它真正的意思是文本数据被建模成一个UTF-16代码点的序列。它实际上是关于JLS如何处理Java语言中与文本处理相关的方面,即如何对字符串文本进行建模。JLS本身没有指定String API。它是由javadocs指定的:一个单独的文档。实际上,JLS只指定(或暗示)字符串具有某些属性。
  2. Java String对象表示为UTF-16不再是字面上正确的。由于Java9,String类使用字符串值的混合表示形式。字符串现在在内部使用byte[]而不是char[]来表示。如果字符串仅由拉丁文-1代码点组成,则每个代码单元用一个byte编码.如果字符串包含拉丁-1范围以外的任何代码单位,则以UTF-16编码. 简而言之,String被javadocs建模为UTF-16代码单元序列和Unicode代码点序列。内部表示法更为复杂。
  3. Java应用程序实际上可以选择建模和表示它想要的文本;也就是说,任何对应用程序有意义的方法。它不需要使用String或相关的类。(显然,如果应用程序选择不使用String等等,那么有些事情就会更加复杂。例如,Java的字符串字面语法只产生String对象,许多其他API都需要String值。)

如果你把这些警告放在一起,我们谈论的特定句子最好被看作是解释性的,而不是指令性的。

Java编译器在内部以与大多数其他Java程序相同的方式表示(Java源代码)文本,即使用String和相关类型。然而,这是一个实现细节。只要编译器正确地支持Java源代码中的Unicode,编译时如何表示它并不重要。

(“适当支持”是指根据JLS规定的任何内容。)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65727321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档