Character.getNumericValue()问题

时间:2010-01-27 15:26:40

标签: java char character

我可能遗漏了一些东西,但为什么这两个数值等于-1

System.out.println(Character.getNumericValue(Character.MAX_VALUE));
System.out.println(Character.getNumericValue(Character.MIN_VALUE));

返回:

-1
-1

4 个答案:

答案 0 :(得分:13)

getNumericValue()会将实际代表数字的字符(如“普通”数字0-9,以及其他脚本中的数字)转换为数字值。由Character.MAX_VALUECharacter.MIN_VALUE表示的字符没有这样的数值;它们不是数字。根据{{​​3}}:

  

如果角色没有   数值,然后返回-1。

答案 1 :(得分:4)

getNumericValue()仅适用于代表数字的字符,例如数字'0''9'。为方便起见,它还将ASCII字母视为base-36数字系统中的数字(因此'A'为10且'Z'为35)。

这个愚弄了很多人。如果您想知道角色的 Unicode 值,您只需将其投射到int

System.out.println((int)Character.MAX_VALUE);
System.out.println((int)Character.MIN_VALUE);

答案 2 :(得分:3)

因为Character.MAX_VALUECharacter.MIN_VALUE不是数字。当参数不是映射到数字的字符时,Character.getNumericValue(char)返回-1。

数字字符(0-9),字母字符(A-Z)和其他unicode数字字符与值相关联。我不知道映射的所有其他字符。但是很多字符只会返回-1。

答案 3 :(得分:3)

..只是因为\u0000和'\ uffff`不代表数字并且没有数字值。

我猜你正在寻找char的16位值,但为此我们可以简单地演员:

int value = (int) Character.MAX_VALUE;