Java - Character toChars() 方法



描述

Java 的 Character toChars() 方法将指定的字符(Unicode 代码点)转换为存储在 char 数组中的 UTF-16 表示形式。

Unicode 代码点分为两类:基本多语言平面 (BMP) 字符和补充字符。BMP 字符是已用 16 位 Unicode 表示形式表示的普通字符,而补充字符则不是。

如果指定的代码点是 BMP 值,则结果 char 数组的值与 codePoint 相同。如果指定的代码点是补充代码点,则结果 char 数组具有相应的代理对。

此方法以两种多态形式出现,具有不同的参数。

语法

以下是 Java Character toChars() 方法的语法

public static char[] toChars(int codePoint)
(or)
public static int toChars(int codePoint, char[] dst, int dstIndex)

参数

  • codePoint − Unicode 代码点

  • dst − char 数组,其中存储 codePoint 的 UTF-16 值

  • dstIndex − dst 数组中存储转换值的起始索引

返回值

此方法返回一个 char 数组,其中包含 codePoint 的 UTF-16 表示形式。

从代码点获取字符数组示例

以下示例显示了 Java Character toChars(int codePoint) 方法的使用方法。在此程序中,我们创建了一个 int 变量并将其初始化为一个代码点,并使用 toChars() 方法将结果 char 数组存储在一个数组中,并打印结果。

package com.tutorialspoint;

public class CharacterDemo {
   public static void main(String[] args) {

      // create a char array ch
      char ch[];

      // create an int primitive cp and assign value
      int cp = 0x006e;

      // assign result of toChars on cp to ch
      ch = Character.toChars(cp);
      String str = "Char array having cp's UTF-16 representation is ";
      System.out.print( str );

      // use a for loop to print ch
      for (int i = 0; i < ch.length; i++) {
         System.out.print( ch[i] );
      }
   }
}

输出

让我们编译并运行上述程序,这将产生以下结果:

Char array having cp's UTF-16 representation is n

使用给定索引从字符获取代码点字符数组示例

以下示例显示了 Java Character toChars(int codePoint, char[] dst, int dstIndex) 方法的使用方法。在此程序中,我们创建了一个 int 变量并将其初始化为一个代码点,并使用 toChars() 方法将结果 char 数组存储在一个数组中,并打印结果。

package com.tutorialspoint;

public class CharacterDemo {
   public static void main(String[] args) {

      // create an int primitive cp and assign value
      int cp = 0x0036;

      // create an int primitive res
      int res;

      /**
       *  create a char array dst and assign UTF-16 value of cp
       *  to it using toChars method
       */
      char dst[] = Character.toChars(cp);

      // check if cp is BMP or supplementary code point using toChars
      res = Character.toChars(cp, dst, 0);
      String str1 = "It is a BMP code point";
      String str2 = "It is a is a supplementary code point";

      // print res value
      if ( res == 1 ) {
         System.out.println( str1 );
      } else if ( res == 2 ) {
         System.out.println( str2 );
      }
   }
}

输出

让我们编译并运行上述程序,这将产生以下结果:

It is a BMP code point

获取代码点字符数组时遇到 IllegalArgumentException 示例

以下示例显示了 Java Character toChars(int codePoint) 方法的使用方法。在此程序中,我们创建了一个 int 变量并将其初始化为一个代码点,并使用 toChars() 方法将结果 char 数组存储在一个数组中,并打印结果。

下面给出的示例程序显示了方法抛出 IllegalArgumentException 的场景

public class Demo {
   public static void main(String[] args) {
      char ch[];
      int cp = 0x2388211;
      ch = Character.toChars(cp);
      System.out.print("Char array having cp's UTF-16 representation is ");
      for (int i = 0; i < ch.length; i++) {
         System.out.println(ch[i]);
      }
   }
}

异常

上面给出的程序首先被编译和运行,以产生以下输出结果。它抛出一个异常,因为给定方法的输入是非法的 Unicode 代码点。

Exception in thread "main" java.lang.IllegalArgumentException: Not a valid Unicode code point: 0x2388211
        at java.base/java.lang.Character.toChars(Character.java:8573)
        at Demo.main(Demo.java:9)

获取代码点字符数组时遇到 NullPointerException 示例

以下示例显示了 Java Character toChars(int codePoint) 方法的使用方法。在此程序中,我们创建了一个 int 变量并将其初始化为一个代码点,并使用 toChars() 方法将结果 char 数组存储在一个数组中,并打印结果。

在这种情况下,方法抛出一个 NullPointerException。

public class Demo {
   public static void main(String[] args) {
      int cp = 0x1271;
      int res;      
      res = Character.toChars(cp, null, 0);      
      if ( res == 1 ) {
         System.out.println("It is a BMP code point");
      } else if ( res == 2 ) {
         System.out.println("It is a is a supplementary code point");
      }
   }
}

异常

让我们编译并运行上面给出的程序,输出结果如下:抛出一个 NullPointerException:

Exception in thread "main" java.lang.NullPointerException
        at java.base/java.lang.Character.toChars(Character.java:8537)
        at Demo.main(Demo.java:11)
java_lang_character.htm
广告