2016-03-04 39 views
3

Java中存在多少個唯一字符?我已經循環到超過10,000,字符仍然被發現:Java中有多少個字符

for (int i = 0; i < 10000; i++) 
    System.out.println((char) i); 

是否有Integer.MAX字符?我一直以爲由於某種原因只有255個

回答

7

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()

1

Java被設計爲使用內部Unicode,所以不同的腳本可以合併成一個字符串。 Unicode是所有進入3字節範圍的腳本的編號。這種Unicode「代碼點」在java中表示爲int

當時charString使用UTF-16(一個Unicode表示使用16位,有時具有兩個字符爲Unicode代碼點分別爲文本,炭。(在.class文件然而字符串常量是UTF- 8.)

char因此需要2個字節。 byte需要1個字節,byte[]爲二進制數據。

在較早的語言(C,C++)是經常存在charbyte之間沒有這樣的區別。