为什么我不能从char转换为int?

时间:2011-09-20 02:58:03

标签: java casting char

由于某种原因,以下代码不起作用:

char cValue = '8';
int digits = (int)cValue;

它不断给出5或7的值,或者沿着那些线的东西。

我只是好奇为什么 - 我正在使用Character.getNumericValue(cValue);

为什么会这样?

2 个答案:

答案 0 :(得分:6)

可以将类型转换为int到int,事实上你是。字符'8'的二进制表示实际上是56(十进制)。有关转化,请参阅any ASCII chart。你要找的是解析,而不是铸造。 getNumericValue()解析char并为您提供其等效数字。转换char只会改变类型并使位模式保持不变。然后根据与它们相关联的变量的类型来解释这些位。

答案 1 :(得分:3)

Java char是无符号的16位值。将一个转换为int时,您将获得该字符的Unicode值。字符'8'的Unicode值为十进制56。

getNumericValue完全不同 - 它为您提供角色的含义,如果它是具有数字含义的字符。