Java中存在多少个唯一字符?我已经超过10,000,并且仍然找到了角色:
for (int i = 0; i < 10000; i++)
System.out.println((char) i);
是否有Integer.MAX字符?我一直认为出于某种原因只有255个
答案 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
。
当时char
和String
用于文本,char使用UTF-16(使用16位的Unicode表示,有时使用两个字符表示Unicode代码点。)但是字符串常量在.class文件是UTF-8。)
char
因此需要2个字节。
byte
占用1个字节,byte[]
占用二进制数据。
在早期语言(C,C ++)中,char
和byte
之间通常没有这种区别。