IsleterOrdigit(char)在Java6和Java7中返回不同的值
以下代码段在Java 6上返回46059,在Java 7上返回48757。你知道什么会改变吗IsleterOrdigit(char)在Java6和Java7中返回不同的值,java,Java,以下代码段在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); inti=0; 用于(字符c=Character.MIN_值;c
int i = 0;
for(char c = Character.MIN_VALUE; c < Character.MAX_VALUE; c++){
if(Character.isLetterOrDigit(c)){
i++;
}
}
System.out.println(i);
inti=0;
用于(字符c=Character.MIN_值;c
我怀疑答案是:
来自Unicode 6.0.0的新脚本和字符JavaSE7早期版本增加了对Unicode 5.1.0的支持。JavaSE7版本的最终版本支持Unicode 6.0.0。Unicode 6.0.0是Unicode标准的主要版本,增加了对2000多个附加字符的支持,以及对属性和数据文件的支持
(很可能在7中添加了更多字符集。)将字符与
IsleterOrdigit
的结果一起打印出来,并比较输出。要么他们更改了某些字符的定义,要么他们支持更多字符。@JoeriHendrickx——打印65K“结果”可能有点困难。@PP-关键是没有实际的方法进行“迭代”搜索。但用“二进制搜索”时,你会把每一个都分成两半,然后是四分之一,然后是八分之一,等等,直到你缩小了差异。这很枯燥,但也可行。另外,Character
的javadoc显示了对和的不同级别的unicode支持