-
我们知道字符串的
.length()
方法会返回字符串的长度,但以下有的字符串只有一个字符,.length()
返回的长度却是2,例如:String str = "𝄞"; System.out.println(str.length());
输出结果如下:
-
这是因为
length
方法返回的是采用utf-16编码表示的给定字符串所需要的代码单元数量(代码单元不懂的可以看这里),大多数常用字符仅用一个代码单元就可以表示,但有些却需要一对代码单元表示。 -
想要知道字符串的实际长度,即
Unicode
代码点的数量(一个字符对应一个代码点,代码点用16进制编写,并且在前面加上U+,例如U+0041
就是字母A的代码点),可以采用如下方法:String str = "𝄞"; int count = str.codePointCount(0, str.length()); System.out.println(count);
此时输出:
-
额外需要知道:字符串的
.charAt(n)
方法返回的是处于位置n的代码单元,而不是字符,所以如果对于这样两个代码单元的字符调用.char()
得不到我们想要的字符:String str = "𝄞"; char c = str.charAt(0); System.out.println(c);
此时输出:
java中为什么单个字符的字符串长度为2?
于 2022-03-16 16:02:35 首次发布