Java:带有unicode字符的String.toCharArray()

Hen*_*son 6 java arrays string char

我知道char不能包含Unicode字符(比如char c ='\ u1023').那我该怎么做呢

    String s = "ABCDEFG\u1023";
    char[] c = s.toCharArray();
Run Code Online (Sandbox Code Playgroud)

出于性能原因,我想将s转换为CharArray,因为我必须循环遍历可能非常长的字符串中的每个字符,这是低效的.任何达到相同结果的东西都很好.

非常感谢!

编辑:实际上char可以包含unicode字符.我只是傻了.感谢那些帮助过的人.

NPE*_*NPE 10

谁告诉你,在Java char中不能包含Unicode字符,是错误的:

整数类型的值是以下范围内的整数:

  • for char,from '\u0000'to '\uffff'inclusive,即0到65535


Dil*_*nga 5

三件事:

  1. 一个char当然可以有u1023.
  2. toCharArray() 将返回一个与UTF16几乎相同的char数组
  3. 由于char是16位,并且Unicode跨越21位,因此BMP外部的字符被编码为两个代理字符.例如,Java 1.5以后就有这方面的API String.codePointAt(...).如果您使用的是Java 1.4或更早版本,请查看ICU4J.