Java中的Character.getNumericValue(..)为大写和小写字符返回相同的数字

时间:2015-08-07 23:28:06

标签: java char

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

    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

我是否会失去理智?这不应该是四个不同的整数输出吗?

1 个答案:

答案 0 :(得分:3)

这是the getNumericValue method的指定行为。

  

字母AZ以大写字母(' \ u0041'至' \ u005A'),小写字母(' \ u0061'至' \ u007A&# 39;)和全宽变体(' \ uFF21'通过' \ uFF3A' \ uFF41'通过' \ uFF5A')表格具有从10到35的数值。

这些值的要点是在解析数字时允许各种各样的基础。例如,在解析十六进制数字时,A-F(和a-f)必须代表10-15。解析支持最多36个基础,这将允许' Z'或者是''代表35。

此数值与这些字母的实际Unicode值不同,后者是唯一的,例如'A'65'a'97等。