Character.getNumericValue(..) in Java returns same

2020-07-24 03:30发布

I have a book with the following code snippet in front of me

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

The example then goes on to use these values as upper and lower limits for iteration which implies that the integers assigned to a and A have different values, but when I run the code above, I get the following output.

10
35
10
35

Am I losing my mind? Shouldn't this be four different integers outputted?

标签: java char
1条回答
太酷不给撩
2楼-- · 2020-07-24 04:00

This is the specified behavior of 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.

The point of these values is to allow for a wide variety of bases when parsing numbers. For example, in parsing hexadecimal numbers, A-F (and a-f) must represent 10-15. Parsing supports bases up to 36, which would allow a 'Z' or a 'z' to represent 35.

This numeric value is a different concept from the actual Unicode values for these letters, which are unique, e.g. 'A' is 65, 'a' is 97, etc.

查看更多
登录 后发表回答