Java中有多少个字符

时间:2016-03-04 22:51:01

标签: java character

Java中存在多少个唯一字符?我已经超过10,000,并且仍然找到了角色:

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

是否有Integer.MAX字符?我一直认为出于某种原因只有255个

2 个答案:

答案 0 :(得分:7)

Java使用Unicode。 Unicode代码点从U + 0000到U + 10FFFF,这相当多。

但并非所有这些都是定义的。如果您想知道其中有多少是&#34;支持&#34;,您可以使用:

final long nrChars = IntStream.rangeClosed(0, 0x10ffff)
    .mapToObj(Character.UnicodeBlock::of)
    .filter(Objects::nonNull)
    .count();

另请注意,由于历史原因,Java的char只能直接代表U + FFFF的代码点。对于&#34;休息&#34; (现在几乎是定义的代码点的大部分),Java使用代理对。请参阅Character.toChars()

答案 1 :(得分:1)

Java旨在使用内部Unicode,因此可以将多种脚本组合在一个String中。 Unicode是进入3字节范围的所有脚本的编号。这样的Unicode&#34;代码点&#34;在java中表示为int

当时charString用于文本,char使用UTF-16(使用16位的Unicode表示,有时使用两个字符表示Unicode代码点。)但是字符串常量在.class文件是UTF-8。)

char因此需要2个字节。 byte占用1个字节,byte[]占用二进制数据。

在早期语言(C,C ++)中,charbyte之间通常没有这种区别。