Character.toString( 65 )\nRun Code Online (Sandbox Code Playgroud)\n\n\nA
\n
Character.toString( codePoint )你说:
\n\n\n我想获取与输入int对应的unicode字符
\n
String character = Character.toString( codePoint ) ;\nRun Code Online (Sandbox Code Playgroud)\n请参阅IdeOne.com 上实时运行的这些示例:
\nSystem.out.println( Character.toString( 65 ) ) ; // "A"\nRun Code Online (Sandbox Code Playgroud)\n\n\nA
\n
String faceWithMedicalMask = Character.toString( 128_567 ) ; // "" = FACE WITH MEDICAL MASK.\nSystem.out.println( FaceWithMedicalMask ) ; \nRun Code Online (Sandbox Code Playgroud)\n\n\n\n
并非所有代码点都分配给编码字符。检查您的输入整数确实是有效的代码点。
\nint codePoint = 128_567 ;\nString faceWithMedicalMask = null ;\nif( Character.isValidCodePoint( codePoint ) ) {\n faceWithMedicalMask = Character.toString( codePoint ) ;\n} else {\n \xe2\x80\xa6 deal with invalid code point\n}\nRun Code Online (Sandbox Code Playgroud)\nchar和Character类型你说:
\n\n\n您可以假设输入 int 在 java 中可以表示为 char。
\n
不,你不能这样假设。
\nUnicode中定义并受 Java 支持的140,000 多个字符中的大多数字符无法用该类型表示char。作为一个16位值,achar在物理上是无能为力的。
自 Java 2 以来,该char类型已被本质上破坏,并被Java 5+ 中添加的代码点支持所取代。
int到char如果您违背我的建议坚持使用char, ,那么您可以将int数字转换为char值。
char c = (char) 66 ; \nSystem.out.println( c ) ;\nRun Code Online (Sandbox Code Playgroud)\n\n\n乙
\n
注意:这只适用于 0 到 65,535 范围内的代码点。大多数 Unicode 字符的代码点超出该范围,最多为 1,114,111。
\n0 到 65,535 的范围在 Unicode 中称为基本多语言平面 (BMP)。Java 提供了一种方法来测试这个范围,Character.isBmpCodePoint(int codePoint). 您可以在演员之前检查:
if( Character.isBmpCodePoint( codePoint ) ) {\n char c = (char) 66 ; \n} else {\n \xe2\x80\xa6 deal with input out of range\n}\nRun Code Online (Sandbox Code Playgroud)\n并非所有代码点都分配给编码字符。检查您的输入整数确实是有效的代码点。
\nif( Character.isBmpCodePoint( codePoint ) ) {\n if( Character.isValidCodePoint( codePoint ) ) {\n char c = (char) 66 ; \n } else {\n \xe2\x80\xa6 deal with invalid code point\n }\n} else {\n \xe2\x80\xa6 deal with input out of range\n}\nRun Code Online (Sandbox Code Playgroud)\n