Java中有多少个字符

MCM*_*ery 3 java character

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

for (int i = 0; i < 10000; i++)
    System.out.println((char) i);
Run Code Online (Sandbox Code Playgroud)

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

fge*_*fge 7

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

但并非所有这些都是定义的.如果您想知道其中有多少是"受支持的",您可以使用:

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

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