由于某种原因,以下代码不起作用:
char cValue = '8';
int digits = (int)cValue;
它不断给出5或7的值,或者沿着那些线的东西。
我只是好奇为什么 - 我正在使用Character.getNumericValue(cValue);
。
为什么会这样?
答案 0 :(得分:6)
你可以将类型转换为int到int,事实上你是。字符'8'的二进制表示实际上是56(十进制)。有关转化,请参阅any ASCII chart。你要找的是解析,而不是铸造。 getNumericValue()
解析char并为您提供其等效数字。转换char只会改变类型并使位模式保持不变。然后根据与它们相关联的变量的类型来解释这些位。
答案 1 :(得分:3)
Java char是无符号的16位值。将一个转换为int时,您将获得该字符的Unicode值。字符'8'的Unicode值为十进制56。
getNumericValue完全不同 - 它为您提供角色的含义,如果它是具有数字含义的字符。