我面前有一本书,上面有以下代码片段
int a = Character.getNumericValue('a');
int z = Character.getNumericValue('z');
int A = Character.getNumericValue('A');
int Z = Character.getNumericValue('Z');
System.out.println(a);
System.out.println(z);
System.out.println(A);
System.out.println(Z);
然后该示例继续使用这些值作为迭代的上限和下限,这意味着分配给 a
和 A
的整数具有不同的值,但是当我运行上面的代码,我得到以下输出。
10
35
10
35
我是不是疯了?这不应该输出四个不同的整数吗?
最佳答案
这是 the getNumericValue
method 的指定行为.
The letters A-Z in their uppercase ('\u0041' through '\u005A'), lowercase ('\u0061' through '\u007A'), and full width variant ('\uFF21' through '\uFF3A' and '\uFF41' through '\uFF5A') forms have numeric values from 10 through 35.
这些值的要点是在解析数字时允许使用多种基数。例如,在解析十六进制数时,A-F(和 a-f)必须代表 10-15。解析支持最多 36 个基数,这将允许“Z”或“z”代表 35。
这个数值与这些字母的实际 Unicode 值是不同的概念,它们是唯一的,例如'A'
为65
,'a'
为97
等
关于java - Java 中的 Character.getNumericValue(..) 为大小写字符返回相同的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31888001/