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?
This is the specified behavior of the
getNumericValue
method.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'
is65
,'a'
is97
, etc.