Я, вероятно, пропускаю что-то, но почему эти два числовых значения равны -1
?
System.out.println(Character.getNumericValue(Character.MAX_VALUE));
System.out.println(Character.getNumericValue(Character.MIN_VALUE));
Возвраты:
-1
-1
GetnumericValue ()
преобразует символы, которые фактически представляют номера (например, «нормальные» цифры 0-9, но и цифры в других сценариях) к их числовому значению. Персонажи, представленные символом.max_value
и символ.min_value
не имеют такого числового значения; Они не являются числами. И в соответствии с API DOC :
, если персонаж не имеет Числовое значение, то -1 возвращается.
.. только потому, что \ u0000
и '\ Ufffff` не представляют цифру и не имеют числового значения.
Я думаю, вы искали 16-битное значение Char, но для этого мы можем просто отличить:
int value = (int) Character.MAX_VALUE;
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);
Поскольку символ. Max_Value
и символ.min_value
не является числовым. Характер. GetnnumericValue (CHAR) Возвращает -1 Когда параметр не является символом, который отображает номер.
Числовые символы (0-9), буквыные символы (A-Z) и другие символы номера Unicode связаны со значениями. Я не знаю всех других персонажей, которые сопоставлены. Но многие персонажи просто вернутся -1.