[英]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.