有人可以告诉我这是怎么回事:
char c = '+'; int i = (int)c; System.out.println("i: " + i + " ch: " + Character.getNumericValue(c));
打印i: 43 ch:-1。这是否意味着我必须依靠原始转换才能转换char为int?那么如何将a转换Character为Integer?
i: 43 ch:-1
char
int
a
Character
编辑:是的,我知道Character.getNumericValue返回的-1值是否不是数值,这对我来说很有意义。问题是:为什么进行原始转换会返回43?
Character.getNumericValue
-1
Edit2: 43是的ASCII码+,但我希望强制转换不会成功,就像getNumericValue没有成功一样。否则,这意味着有两种语义等效的方法可以执行相同的操作,但结果不同?
43
ASCII
getNumericValue
Character.getNumericValue(c)
在java.lang.Character.getNumericValue(char ch)返回int指定的Unicode字符表示的值。例如,字符'\u216C'(罗马数字五十)将返回一个值为50的int值。
java.lang.Character.getNumericValue(char ch)
Unicode
'\u216C'
字母AZ的大写('\u0041' through '\u005A'),小写('\u0061' through '\u007A')和全角变体('\uFF21' through '\uFF3A' and '\uFF41' through '\uFF5A')形式具有从10到35的数值。这独立于Unicode规范,Unicode规范不为这些char值分配数值。
('\u0041' through '\u005A')
('\u0061' through '\u007A')
('\uFF21' through '\uFF3A' and '\uFF41' through '\uFF5A')
此方法返回字符的数值,作为非负的int值。
-2,如果字符的数字值不是非负整数;
如果字符没有数字值,则为-1。