我可能遗漏了一些东西,但为什么这两个数值等于-1
?
System.out.println(Character.getNumericValue(Character.MAX_VALUE));
System.out.println(Character.getNumericValue(Character.MIN_VALUE));
返回:
-1
-1
答案 0 :(得分:13)
getNumericValue()
会将实际代表数字的字符(如“普通”数字0-9,以及其他脚本中的数字)转换为数字值。由Character.MAX_VALUE
和Character.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_VALUE
和Character.MIN_VALUE
不是数字。当参数不是映射到数字的字符时,Character.getNumericValue(char)返回-1。
数字字符(0-9),字母字符(A-Z)和其他unicode数字字符与值相关联。我不知道映射的所有其他字符。但是很多字符只会返回-1。
答案 3 :(得分:3)
..只是因为\u0000
和'\ uffff`不代表数字并且没有数字值。
我猜你正在寻找char的16位值,但为此我们可以简单地演员:
int value = (int) Character.MAX_VALUE;