Character.getNumericValue()问题

fol*_*one 9 java character char

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

System.out.println(Character.getNumericValue(Character.MAX_VALUE));
System.out.println(Character.getNumericValue(Character.MIN_VALUE));
Run Code Online (Sandbox Code Playgroud)

返回:

-1
-1
Run Code Online (Sandbox Code Playgroud)

Mic*_*rdt 13

getNumericValue()将实际表示数字的字符(如"普通"数字0-9,以及其他脚本中的数字)转换为其数字值.由Character.MAX_VALUE和表示的字符和Character.MIN_VALUE没有这样的数值; 它们不是数字.并根据API文档:

如果字符没有数字值,则返回-1.


Ala*_*ore 5

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);
Run Code Online (Sandbox Code Playgroud)