Java中存在多少個唯一字符?我已經循環到超過10,000,字符仍然被發現:Java中有多少個字符
for (int i = 0; i < 10000; i++)
System.out.println((char) i);
是否有Integer.MAX字符?我一直以爲由於某種原因只有255個
Java中存在多少個唯一字符?我已經循環到超過10,000,字符仍然被發現:Java中有多少個字符
for (int i = 0; i < 10000; i++)
System.out.println((char) i);
是否有Integer.MAX字符?我一直以爲由於某種原因只有255個
Java使用Unicode。 Unicode代碼點來自U + 0000到U + 10FFFF,這使得相當多。
但並不是所有的定義。如果你想知道其中有多少是「支持」,你可以使用:
final long nrChars = IntStream.rangeClosed(0, 0x10ffff)
.mapToObj(Character.UnicodeBlock::of)
.filter(Objects::nonNull)
.count();
還要注意的是,由於歷史的原因,Java的char
只能直接表示代碼點以U + FFFF。對於「休息」(現在幾乎是大多數定義的代碼點),Java使用代理對。見Character.toChars()
。
Java被設計爲使用內部Unicode,所以不同的腳本可以合併成一個字符串。 Unicode是所有進入3字節範圍的腳本的編號。這種Unicode「代碼點」在java中表示爲int
。
當時char
和String
使用UTF-16(一個Unicode表示使用16位,有時具有兩個字符爲Unicode代碼點分別爲文本,炭。(在.class文件然而字符串常量是UTF- 8.)
char
因此需要2個字節。 byte
需要1個字節,byte[]
爲二進制數據。
在較早的語言(C,C++)是經常存在char
和byte
之間沒有這樣的區別。