[英]java unicode value of char
当我执行Collection.sort(List)时,它将基于String的compareTo()逻辑进行排序,在该逻辑中,将两个字符串逐个字符进行比较。
List<String> file1 = new ArrayList<String>();
file1.add("1,7,zz");
file1.add("11,2,xx");
file1.add("331,5,yy");
Collections.sort(file1);
我的理解是char表示它指定了unicode值,我想知道char的unicode值,例如,(逗号)等。我该怎么办? 任何网址都包含这些网址的数值吗?
我的理解是char表示它指定了unicode值,我想知道char的unicode值,例如,(逗号)等
好吧,有一个从char
到int
的隐式转换,您可以轻松地打印出来:
int value = ',';
System.out.println(value); // Prints 44
这是char
的UTF-16代码单元。 (如fge所述,Java中的char
是UTF-16代码单元,而不是Unicode字符。存在大于65535的Unicode代码点,它们表示为两个UTF-16代码单元。)
任何网址都包含这些网址的数值吗?
是-有关Unicode的更多信息,请访问Unicode网站 。
嗯, char
不是一个“ unicode值”(使用的单词是Unicode code point )。
char
是UTF-16编码的代码单元。 碰巧的是,在Unicode的基本多语言平面中(即,对于此范围内定义的代码点,Unicode代码点的范围从U + 0000到U + FFFF),是的,在char
和Unicode之间存在char
映射。
为了知道代码点的数值 ,您可以执行以下操作:
System.out.println((int) myString.charAt(0));
但这不是BMP外部代码点的情况。 对于这些,一个代码点转换为两个字符。 请参见Character.toChars()
。 更一般而言, Character
所有静态方法都与代码点有关。 有很多!
这也意味着String
的.length()
实际上具有误导性,因为它返回的是字符数, 而不是字素数。
带有一个Unicode表情符号的演示(该页面的第一个):
System.out.println(new String(Character.toChars(0x1f600)).length())
打印2
。 鉴于:
final String s = new String(Character.toChars(0x1f600));
System.out.println(s.codePointCount(0, s.length());
打印1
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.