【发布时间】:2014-02-14 13:25:26
【问题描述】:
在 Java 中,允许以下内容:
char c = 'A' + 1;
在这里,c 将保存值“B”。上面,首先计算表达式。所以“A”被转换为 65,整个表达式的计算结果为 66,然后 66 被转换为“B”,因为我们将值存储在一个字符中。
但是,以下给出了编译时错误:
char c = 'A';
c = c + 1;
Java 如何以不同方式看待表达式的解释是什么?顺便说一句,以下内容也可以正常工作:
char c = 'A';
c++;
【问题讨论】:
-
请查看以下问题,特别是 rgettman 的回答:stackoverflow.com/questions/18648283/…
-
我不确定说 66 转换为 'B' 是否准确。字符基本上已经是数字了。
-
@Piovezan 尽管spec does describe char as a range of code points 和积分范围都很有趣。对于文字,字符文字 ('B') 始终是 char 类型,当然 66 始终是 int 类型。也许最准确的说法是它被转换为 '\u0042'(一个始终为 char 类型的数字代码)。
-
这是一个很好的问题,我以前没有看到这样的问题。真棒的问题。你接受的答案也很好,对你来说也很完善。
标签: java char type-conversion int variable-assignment