出于某种原因,下面的代码无法正常工作:为什么我不能从char到int类型转换?
char cValue = '8';
int digits = (int)cValue;
它一直给的5或7,或沿着这些线路的东西一定的价值。
我只是好奇为什么 - 我使用Character.getNumericValue(cValue);
来代替。
为什么会发生这种情况?
出于某种原因,下面的代码无法正常工作:为什么我不能从char到int类型转换?
char cValue = '8';
int digits = (int)cValue;
它一直给的5或7,或沿着这些线路的东西一定的价值。
我只是好奇为什么 - 我使用Character.getNumericValue(cValue);
来代替。
为什么会发生这种情况?
你可以 typecast char int,而事实上你是。字符'8'的二进制表示实际上是56(十进制)。有关转换,请参见any ASCII chart。你正在寻找的是解析,而不是铸造。 getNumericValue()
分析字符,并给你它的数字等值。铸造字符只会改变字体类型,并使字体的图案保持不变。然后根据它们关联的变量的类型来解释这些位。
Java char是一个无符号的16位值。当您将其中一个转换为int时,您将获得该字符的Unicode值。字符'8'具有十进制56的Unicode值。
getNumericValue完全不同 - 它给出了字符的含义,如果它是具有数字含义的字符。
实际上,您是否获得值56,即字符“8”的ASCII值? –
你可以说'char cValue = 8;'。然后演员应该按预期成功。 –
@GregHewgill,这是有道理的。谢谢 – Cody