Java中存在多少个唯一字符?我已经循环到超过10,000,并且仍然找到了角色:
for (int i = 0; i < 10000; i++)
System.out.println((char) i);
Run Code Online (Sandbox Code Playgroud)
有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();
Run Code Online (Sandbox Code Playgroud)
另请注意,由于历史原因,Java char只能直接代表U + FFFF的代码点.对于"休息"(现在几乎是定义的代码点的大部分),Java使用代理对.见Character.toChars().