我面前有一本书,上面有以下代码段

    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);


然后,该示例继续使用这些值作为迭代的上限和下限,这意味着分配给aA的整数具有不同的值,但是当我运行上述代码时,得到以下输出。

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,依此类推。

10-04 13:09