我面前有一本书,其中包含以下代码片段
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);
Run Code Online (Sandbox Code Playgroud)
然后,该示例继续使用这些值作为迭代的上限和下限,这意味着分配给a和的整数A具有不同的值,但是当我运行上面的代码时,我得到以下输出。
10
35
10
35
Run Code Online (Sandbox Code Playgroud)
我失去理智了吗?这不应该是输出四个不同的整数吗?
这是该getNumericValue方法的指定行为。
字母 AZ 的大写形式('\u0041' 到 '\u005A')、小写形式('\u0061' 到 '\u007A')以及全角变体('\uFF21' 到 '\uFF3A' 和 '\uFF41'到 '\uFF5A') 形式的数值范围为 10 到 35。
这些值的目的是在解析数字时允许使用多种基数。例如,在解析十六进制数字时,AF(和af)必须表示10-15。解析支持最多 36 个基数,这将允许“Z”或“z”代表 35。
该数值与这些字母的实际 Unicode 值是不同的概念,这些字母是唯一的,例如'A'is 65、'a'is97等。
| 归档时间: |
|
| 查看次数: |
6513 次 |
| 最近记录: |