转换字符(Casting vs. .getNumericValue)

时间:2014-10-03 19:23:29

标签: java casting char int

为什么cast(int)可以正确地将符号的字符转换为int,但是" Character.getNumericValue(' someSymbolCharValue');"可'?吨

E.g。 " Character.getNumericValue('?');" 将返回-1,即使char可以显示为int" (int)'?' "它将返回63

1 个答案:

答案 0 :(得分:2)

字符的“数值”不是其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