【问题标题】:Converting chars (Casting vs. .getNumericValue)转换字符(铸造与 .getNumericValue)
【发布时间】:2014-11-28 21:30:13
【问题描述】:

为什么强制转换(int)可以正确地将符号的字符转换为int,但是“Character.getNumericValue('someSymbolCharValue');”不能吗?

例如"Character.getNumericValue('?');" 将返回 -1,即使 char 可以用 "(int) '?'" 表示为 int返回 63

【问题讨论】:

  • Character.getNumericValue('?') != cast.

标签: java casting char int


【解决方案1】:

一个字符的“数值”不是它的 ASCII/Unicode 索引值。 Character.getNumericValue method 将尝试通过应用字符的数字含义将char 转换为int

返回指定的 Unicode 字符表示的 int 值。例如,字符 '\u216C'(罗马数字 50)将返回一个值为 50 的 int。 大写字母 AZ('\u0041' 到 '\u005A')、小写字母('\u0061' 到 '\u007A')和全角变体('\uFF21' 到 '\uFF3A' 和 '\uFF41'通过 '\uFF5A') 形式具有从 10 到 35 的数值。这与 Unicode 规范无关,Unicode 规范不会为这些 char 值分配数值。

如果字符没有数值,则返回-1。如果字符具有不能表示为非负整数的数值(例如,小数值),则返回 -2。

预计getNumericValue 不会同意将char 转换为int

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-17
    • 2019-08-05
    • 2017-08-12
    • 1970-01-01
    • 2012-06-05
    • 1970-01-01
    • 2011-05-19
    相关资源
    最近更新 更多