相关疑难解决方法(0)

Java中的整数算术与char和整数文字

有人可以向我解释为什么以下代码在Java中编译好吗?

char c = 'a' + 10;
Run Code Online (Sandbox Code Playgroud)

为什么这不等于以下,不编译?

int i = 10;
char c = 'a' + i;
Run Code Online (Sandbox Code Playgroud)

Java语言规范(第3.10.1节)规定"如果整数文字long后缀为ASCII字母L或l(ell),则为整数文字;否则为类型int(§4.2.1)." 第4.2.2节引用"数值运算符,它产生类型int或值的值long".因此,在我的理解中,添加的结果应该是一个int,不能分配给char变量c.

但是,它编译得很好(至少在Sun JDK 1.6.0版本17和Eclipse Helios中).

也许是一个人为的例子,但是它被用在我一直在教的Java入门课程中,现在我发现我并不真正理解为什么它有效.

java

18
推荐指数
2
解决办法
2万
查看次数

从数组赋值时,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
Run Code Online (Sandbox Code Playgroud)

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

The result of the additive operator applied two char operands is an int.
Run Code Online (Sandbox Code Playgroud)

那我为什么要这样做?

char c2 = (int)((int)98 + (int)97);
Run Code Online (Sandbox Code Playgroud)

java arrays char

11
推荐指数
1
解决办法
788
查看次数

标签 统计

java ×2

arrays ×1

char ×1