Java 6和7中的Character.isLetterOrDigit(char)返回不同的值

15

以下代码片段在Java 6上返回46059,在Java 7上返回48757。有什么想法可能发生了什么变化?

int i = 0;
for(char c = Character.MIN_VALUE; c < Character.MAX_VALUE; c++){
    if(Character.isLetterOrDigit(c)){
        i++;
    }
}
System.out.println(i);

2
(很可能添加了更多的字符集到7。) - Hot Licks
打印出字符以及 isLetterOrDigit 的结果,并比较输出。他们要么改变了某些字符的定义,要么支持更多字符。 - Joeri Hendrickx
@JoeriHendrickx -- 打印出65K个“结果”可能会是一项艰巨的任务。 - Hot Licks
@PP - 关键是没有实际的方法来进行“迭代”搜索。但是通过“二分搜索”,您可以将每个部分分成两半,然后四分之一,然后八分之一等,直到缩小差异。这很繁琐,但可行。 - Hot Licks
1个回答

16

我怀疑 这篇文档 中有答案:

来自Unicode 6.0.0的新脚本和字符
Java SE 7的早期版本添加了对Unicode 5.1.0的支持。 Java SE 7最终版支持Unicode 6.0.0。 Unicode 6.0.0是Unicode标准的一个重要版本,增加了对2000多个额外字符的支持,以及支持属性和数据文件。


Character 的 javadoc 也显示了对 Unicode 支持不同级别的区别,具体可见 67 - user180100

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接