我面前有一本书,上面有以下代码段
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的指定行为。
字母AZ的大写('\ u0041'至'\ u005A'),小写字母('\ u0061'至'\ u007A')和全角变体('\ uFF21'至'\ uFF3A'和'\ uFF41'到'\ uFF5A')之间的数值从10到35。
这些值的目的是在解析数字时允许使用多种基础。例如,在解析十六进制数时,A-F(和a-f)必须表示10-15。解析最多支持36个基数,这将允许“ Z”或“ z”表示35。
此数字值与这些字母的实际Unicode值(例如,唯一的)的概念不同。 'A'
是65
,'a'
是97
,依此类推。