我有一本书,前面有以下代码片段
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);
然后该示例继续使用这些值作为迭代的上限和下限,这意味着分配给a
和A
的整数具有不同的值,但是当我运行上面的代码时,我得到以下输出。
10
35
10
35
我是否会失去理智?这不应该是四个不同的整数输出吗?
答案 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
等。