Java Character.getNumericValue()问题
我可能遗漏了什么,但为什么这两个数值等于Java Character.getNumericValue()问题,java,char,character,Java,Char,Character,我可能遗漏了什么,但为什么这两个数值等于-1 System.out.println(Character.getNumericValue(Character.MAX_VALUE)); System.out.println(Character.getNumericValue(Character.MIN_VALUE)); 返回: -1 -1 getNumericValue()将实际表示数字的字符(如“普通”数字0-9,但也包括其他脚本中的数字)转换为其数值。由Character.MAX\u VAL
-1
System.out.println(Character.getNumericValue(Character.MAX_VALUE));
System.out.println(Character.getNumericValue(Character.MIN_VALUE));
返回:
-1
-1
getNumericValue()
将实际表示数字的字符(如“普通”数字0-9,但也包括其他脚本中的数字)转换为其数值。由Character.MAX\u VALUE
和Character.MIN\u VALUE
表示的字符没有这样的数值;它们不是数字。并根据:
如果角色没有
数值,然后返回-1
因为
Character.MAX\u VALUE
和Character.MIN\u VALUE
不是数字。当参数不是映射到数字的字符时,返回-1
数字字符(0-9)、字母字符(A-Z)和其他unicode数字字符与值关联。我不知道映射的所有其他字符。但是许多字符只返回-1。。。只是因为
\u0000
和'\uffff'不代表数字,也没有数值
我猜您是在寻找char的16位值,但对于这一点,我们可以简单地强制转换:
int value = (int) Character.MAX_VALUE;
getNumericValue()
仅适用于表示数字的字符,例如数字'0'
到'9'
。为了方便起见,它还将ASCII字母视为基数为36的数字系统中的数字(因此'a'
为10,'Z'
为35)
这个愚弄了很多人。如果想知道字符的Unicode值,只需将其强制转换为int
:
System.out.println((int)Character.MAX_VALUE);
System.out.println((int)Character.MIN_VALUE);
你的最后一句话不正确;还有更多的字符具有Unicode标准定义的相关数值。啊,我不知道。我猜他们只是在方法文档中给出了罗马数字作为一个例子。