Java 教程

Java 控制语句

面向对象编程

Java 内置类

Java 文件处理

Java 错误与异常

Java 多线程

Java 同步

Java 网络编程

Java 集合

Java 接口

Java 数据结构

Java 集合算法

高级 Java

Java 其他

Java API 与框架

Java 类参考

Java 有用资源

Java - Unicode 系统



Unicode 是一种国际字符集,包含来自全球众多语言的大量字符、符号和文字。

Java 中的 Unicode 系统

Java 编程语言具有平台无关性,内置支持 Unicode 字符,允许开发人员创建能够与多种语言和文字无缝工作的应用程序。

在 Unicode 之前,存在多种表示字符编码的标准:

  • ASCII - 用于美国。

  • ISO 8859-1 - 用于西欧语言。

  • KOI-8 - 用于俄语。

  • GB18030 和 BIG-5 - 用于中文。

因此,为了支持多语言应用程序代码,某些字符使用单个字节,某些字符使用两个字节。甚至相同的代码可能在一种语言中表示一个不同的字符,而在另一种语言中可能表示其他字符。

为了克服上述缺点,开发了 Unicode 系统,其中每个字符由 2 个字节表示。由于 Java 是为多语言开发的,因此它采用了 Unicode 系统。最低值由\u0000表示,最高值由\uFFFF表示。

方法:使用 Unicode 字符和值

在 Java 中使用 Unicode 字符有两种方法:使用 Unicode 转义序列和直接存储 Unicode 字符。

第一种方法涉及使用转义序列表示 Unicode 字符,当无法直接在 Java 代码中键入或显示字符时,这很有用。第二种方法涉及直接将 Unicode 字符存储在变量中,当可以直接键入或显示字符时,这更方便。

方法的选择取决于程序的具体要求。但是,一般来说,当可以键入或显示字符时,方法 2 更简单、更方便;而当无法键入或显示字符时,方法 1 是必要的。

1. 使用 Unicode 转义序列

在 Java 中存储 Unicode 字符的一种方法是使用 Unicode 转义序列。转义序列是一系列表示特殊字符的字符。在 Java 中,Unicode 转义序列以字符'\u'开头,后跟四个十六进制数字,这些数字表示所需字符的 Unicode 代码点。

示例:Unicode 转义序列的使用

package com.tutorialspoint;

public class UnicodeCharacterDemo {
   public static void main (String[]args) {   		 
      //Unicode escape sequence
      char unicodeChar = '\u0041';
      // point for 'A'
      System.out.println("Stored Unicode Character: " + unicodeChar);
   }
}

编译并运行上面的程序。这将产生以下结果:

输出

Stored Unicode Character: A

在上面的代码片段中,Unicode 转义序列 '\u0041' 表示字符 'A'。该转义序列被赋值给 char 变量 unicodeChar,然后将存储的字符打印到控制台。

2. 直接存储 Unicode 值

或者,您可以通过将字符括在单引号中来直接将 Unicode 字符存储在 char 变量中。但是,对于无法使用键盘直接键入或不可见的字符(例如控制字符),这种方法可能不可行。

示例 1:将 Unicode 字符赋给变量

package com.tutorialspoint;

public class UnicodeCharacterDemo {
   public static void main(String[] args) {
      // Storing Unicode character directly
      char unicodeChar = 'A';
      // Directly storing the character 'A'
      System.out.println("Stored Unicode Character: " + unicodeChar);
   }
}

编译并运行上面的程序。这将产生以下结果:

输出

Stored Unicode Character: A

在这个例子中,字符 'A' 直接用单引号括起来并赋给 char 变量 unicodeChar。然后将存储的字符打印到控制台。

示例 2:将 Unicode 值赋给变量

package com.tutorialspoint;

public class UnicodeCharacterDemo {
   public static void main(String[] args) {
      // Storing Unicode characters using escape sequences
      char letterA = '\u0041';
      char letterSigma = '\u03A3';
      char copyrightSymbol = '\u00A9';
      // Storing Unicode characters directly
      char letterZ = 'Z';
      char letterOmega = 'Ω';
      char registeredSymbol = '®';
      // Printing the stored Unicode characters
      System.out.println("Stored Unicode Characters using Escape Sequences:");
      System.out.println("Letter A: " + letterA);
      System.out.println("Greek Capital Letter Sigma: " + letterSigma);
      System.out.println("Copyright Symbol: " + copyrightSymbol);
      System.out.println("\nStored Unicode Characters Directly:");
      System.out.println("Letter Z: " + letterZ);
      System.out.println("Greek Capital Letter Omega: " + letterOmega);
      System.out.println("Registered Symbol: " + registeredSymbol);
   }
}

编译并运行上面的程序。这将产生以下结果:

输出

Stored Unicode Characters using Escape Sequences:
Letter A: A
Greek Capital Letter Sigma: Σ
Copyright Symbol: ©

Stored Unicode Characters Directly:
Letter Z: Z
Greek Capital Letter Omega: Ω
Registered Symbol: ®

示例 3:将 Unicode 字符和值赋给变量

此示例演示如何操作存储的 Unicode 字符。它计算大写字母 'A' 和小写字母 'a' 之间的差值,并使用该差值计算大写字母 'C'。然后,通过在大写字母 'C' 的 Unicode 代码点上加 32 来计算小写字母 'c'。操作后的 Unicode 字符将打印到控制台。

package com.tutorialspoint;

public class UnicodeCharacterDemo {
   public static void main(String[] args) {
      // Storing Unicode characters using escape sequences
      char letterA = '\u0041';
      char letterSmallA = '\u0061';
      // Storing Unicode characters directly
      char letterB = 'B';

      // Manipulating the stored Unicode characters
      int difference = letterA - letterSmallA;
      char letterC = (char) (letterB + difference);
      char letterSmallC = (char) (letterC + 32);
      // Printing the manipulated Unicode characters
      System.out.println("Manipulated Unicode Characters:");
      System.out.println("Difference between A and a: " + difference);
      System.out.println("Calculated Letter C: " + letterC);
      System.out.println("Calculated Letter c: " + letterSmallC);
   }
}

编译并运行上面的程序。这将产生以下结果:

输出

Manipulated Unicode Characters:
Difference between A and a: -32
Calculated Letter C: "
Calculated Letter c: B

结论

在 Java 中,您可以使用字符字面量来存储 Unicode 字符,方法是使用 Unicode 转义序列或直接将字符用单引号括起来。这两种方法各有优缺点。转义序列提供了一种一致的方式来表示源代码中的任何 Unicode 字符,而直接存储字符在处理易于键入或显示的字符时更方便。

本文提供了一种在 Java 中存储 Unicode 字符的算法,讨论了两种不同的存储这些字符的方法,并演示了每种方法的工作示例。了解这些技术将帮助开发人员创建能够与各种语言和脚本无缝工作的应用程序,从而充分利用 Java 编程中 Unicode 的强大功能。

广告
© . All rights reserved.