Character.getNumericValue(..) in Java returns same number for upper and lower case characters

这一生的挚爱 提交于 2020-08-03 07:16:12

问题


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?


回答1:


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.



来源:https://stackoverflow.com/questions/31888001/character-getnumericvalue-in-java-returns-same-number-for-upper-and-lower-ca

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!