在Java中将Chars转换为Ints

wor*_*138 1 java int casting char

系统:Windows Vista 32位,Java 6.0.2

关于将字符转换为整数,我有几个问题.我运行下面的代码,将myInt保留为值4:

  char myChar = '4';
  int myInt = myChar - '0';
Run Code Online (Sandbox Code Playgroud)

现在,这种转换是Java自动完成的吗?将ascii值'0'从ascii'4'减去,然后在幕后投射到一个int?这对我来说很困惑,因为当我尝试反向操作时,我必须实际将结果转换为char:

  int anotherInt = 5;
  char newChar = anotherInt + '0'; //gives error

  char newChar = (char)(anotherInt + '0'); //works fine
Run Code Online (Sandbox Code Playgroud)

这是否发生是因为Java会自动将(anotherInt +'0')转换为int,如第一个示例中所示?谢谢.

cdh*_*wie 22

char(2字节类型)到int(4字节类型)的转换在Java中是隐含的,因为这是一个扩展转换 - 您可以存储在一个可以存储的所有可能值charint.反向转换不是隐含的,因为它是一个缩小的转换 - 它可能丢失信息(int被丢弃的高两个字节).你必须总是明确地在这种场景中投射,作为告诉编译器的一种方式"是的,我知道这可能会丢失信息,但我仍然想要这样做."