从数组赋值时,Char数组编译时错误

时间:2014-08-08 05:50:27

标签: java arrays char

所以我有这个代码

char [] a = {'a','b','c'};

char c = 'a' + 'b'; //works
char c2 = 98 + 97; //works
char c3 = a[0] + a[1]; //compile time error

所以它们都是相同的功能,但在获取和使用数组值时,它给了我一个编译时错误。造成这种情况的原因是什么?

The result of the additive operator applied two char operands is an int.

然后我为什么要这样做?

char c2 = (int)((int)98 + (int)97);

1 个答案:

答案 0 :(得分:2)

The result of the additive operator applied two char operands is an int.

  

对操作数执行二进制数字提升。   数值操作数上的加法表达式的类型是其操作数的提升类型

前两个是常量表达式,其结果值为int,可以安全地分配给char

第三个不是常量表达式,因此编译器无法保证。

同样

  

然后我为什么要这样做?

char c2 = (int)((int)98 + (int)97);

这也是一个常量表达式,结果可以放在char中。

尝试使用更大的值,1234555555