Converting chars (Casting vs. .getNumericValue)

后端 未结 1 894
小蘑菇
小蘑菇 2021-01-07 10:13

Why is it that casting (int) can convert chars of a symbol to int properly, but \"Character.getNumericValue(\'someSymbolCharValue\');\" can\'t?

E.g. \"Charac

相关标签:
1条回答
  • 2021-01-07 10:26

    A character's "numeric value" is not its ASCII/Unicode index value. The Character.getNumericValue method will attempt to convert the char to an int by applying the character's numeric meaning:

    Returns the int value that the specified Unicode character represents. For example, the character '\u216C' (the roman numeral fifty) will return an int with a value of 50. The letters A-Z in their uppercase ('\u0041' through '\u005A'), lowercase ('\u0061' through '\u007A'), and full width variant ('\uFF21' through '\uFF3A' and '\uFF41' through '\uFF5A') forms have numeric values from 10 through 35. This is independent of the Unicode specification, which does not assign numeric values to these char values.

    If the character does not have a numeric value, then -1 is returned. If the character has a numeric value that cannot be represented as a nonnegative integer (for example, a fractional value), then -2 is returned.

    It is expected that getNumericValue will not agree with casting the char to an int.

    0 讨论(0)
提交回复
热议问题