【发布时间】:2013-10-23 15:49:57
【问题描述】:
谁能给我解释一下这里发生了什么:
char c = '+';
int i = (int)c;
System.out.println("i: " + i + " ch: " + Character.getNumericValue(c));
这会打印出i: 43 ch:-1。这是否意味着我必须依靠原始转换将char 转换为int?那么如何将Character 转换为Integer?
编辑: 是的,我知道Character.getNumericValue 返回-1,如果它不是一个数值,这对我来说是有意义的。问题是:为什么进行原始转换会返回43?
Edit2: 43 是 + 的 ASCII,但我希望转换不会成功,就像 getNumericValue 没有成功一样。否则这意味着有两种语义等效的方式来执行相同的操作但结果不同?
【问题讨论】:
-
你期望得到什么而不是
43? -
我不认为
getNumericValue做你认为它做的事。这是一种将字符转换为整数的实用方法(例如,将字符“5”转换为整数 5)。这与强制转换(将字符 '5' 转换为整数 53)不同。 -
关键是转换不会返回数字的数值。这两个操作做了两个不同的事情。
标签: java integer type-conversion character primitive