java - Java 中的 Character.getNumericValue(..) 为大小写字符返回相同的数字

标签 java char

我面前有一本书,上面有以下代码片段

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

然后该示例继续使用这些值作为迭代的上限和下限,这意味着分配给 aA 的整数具有不同的值,但是当我运行上面的代码,我得到以下输出。

10
35
10
35

我是不是疯了?这不应该输出四个不同的整数吗?

最佳答案

这是 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.

这些值的要点是在解析数字时允许使用多种基数。例如,在解析十六进制数时,A-F(和 a-f)必须代表 10-15。解析支持最多 36 个基数,这将允许“Z”或“z”代表 35。

这个数值与这些字母的实际 Unicode 值是不同的概念,它们是唯一的,例如'A'65'a'97

关于java - Java 中的 Character.getNumericValue(..) 为大小写字符返回相同的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31888001/

相关文章:

java - 使用 Powershell 安装 Jasperserver 时出现问题。 ANT看不到Java

java - 关于Java中的验证案例和临时变量的愚蠢问题

c++ - 如何将 litere 与 "("的 char 数组进行比较

c++ - 当字符串从函数返回时,如果在它之前有和结束行,它会错误地打印输出

java - 使用 java 客户端与 spdy 服务器通信

java - 使用Jdbc和ms管理系统添加到表

Java用给定字符串字符(?)的N个元素填充数组

c++ - 如何在 C++ 中使用 << 将 unsigned/signed char 或 <cstdint> 类型输出为整数

c++ - sscanf 错误 : cannot convert 'String' to 'const char*'

java - swing 是否支持 *.ico 文件?