跳转到内容

Unicode

100% developed
来自维基教科书,开放世界中的开放书籍

导航 语言基础 主题: v  d  e )


大多数 Java 程序文本由 ASCII 字符组成,但任何 Unicode 字符都可以用作标识符名称的一部分,在注释中以及在字符和字符串字面量中。例如,π(即希腊小写字母 pi)是一个有效的 Java 标识符

Example 代码部分 3.100:Pi。
double π = Math.PI;

以及在字符串字面量中

Example 代码部分 3.101:Pi 字面量。
String pi = "π";

Unicode 转义序列

[编辑 | 编辑源代码]

Unicode 字符也可以通过 Unicode 转义序列表示。Unicode 转义序列可以出现在 Java 源代码文件的任何地方(包括标识符、注释和字符串字面量中)。

Unicode 转义序列由以下部分组成:

  1. 反斜杠 '\'(ASCII 字符 92,十六进制 0x5c),
  2. 'u'(ASCII 117,十六进制 0x75)
  3. 可选的一个或多个额外的 'u' 字符,以及
  4. 四个十六进制数字(字符 '0' 到 '9' 或 'a' 到 'f' 或 'A' 到 'F')。

这些序列表示 Unicode 字符的 UTF-16 编码。例如,'a' 等效于 '\u0061'。这种转义方法不支持超出 U+FFFF 的字符,或者您必须使用代理对。[1]

程序中的任何和所有字符都可以用 Unicode 转义字符表示,但除了 Java 编译器之外,这样的程序可读性很差,而且它们并不紧凑。

您可以在此处找到所有字符的完整列表。

π 也可表示为 Java 中的Unicode 转义序列\u03C0。因此,以下是一个有效但不可读的声明和赋值

Example 代码部分 3.102:Pi 的 Unicode 转义序列。
double \u03C0 = Math.PI;

以下演示了在其他 Java 语法中使用 Unicode 转义序列

Example 代码部分 3.103:字符串字面量中的 Unicode 转义序列。
// Declare Strings pi and quote which contain \u03C0 and \u0027 respectively:
String pi = "\u03C0";
String quote = "\u0027";

请注意,Unicode 转义序列的功能与源代码中的任何其他字符相同。例如,\u0022(双引号,“)需要在字符串中像“一样加引号。

Example 代码部分 3.104:双引号。
// Declare Strings doubleQuote1 and doubleQuote2 which both contain " (double quote):
String doubleQuote1 = "\"";
String doubleQuote2 = "\\u0022"; // "\u0022" doesn't work since """ doesn't work.

国际语言支持

[edit | edit source]

该语言区分字节和字符。字符在内部使用 UCS-2 存储,尽管从 J2SE 5.0 开始,该语言也支持使用 UTF-16 及其代理。因此,Java 程序源代码可以包含任何 Unicode 字符。

因此,以下代码是完全有效的 Java 代码;它包含类和变量名称以及字符串字面量中的中文字符

Computer code 代码清单 3.50:哈嘍世界.java
public class 哈嘍世界 {
    private String 文本 = "哈嘍世界";
}

参考资料

[edit | edit source]
  1. "3.1 Unicode", The Java™ Language Specification [1], Java SE 7 Edition, pp. 15-16.


华夏公益教科书