有人可以向我解释一下这里发生了什么吗:
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
呢?
编辑2: 43
是 +
的 ASCII 码,但我希望转换不成功就像 getNumericValue
一样。否则这意味着有两种语义等效的方式来执行相同的操作,但结果不同?
43
吗? - PM 77-1getNumericValue
不是你想象中的那样。它是一个实用方法,将字符转换为整数(例如,将字符'5'转换为整数5)。这与类型转换(将字符'5'转换为整数53)不同。请注意区分两者的差异。 - Aurand