java - Java 中带有 char 和整数文字的整数运算

标签 java

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

char c = 'a' + 10;

为什么这不等同于以下不编译的内容?

int i = 10;
char c = 'a' + i;

Java 语言规范(第 3.10.1 节)声明“如果整数文字以 ASCII 字母 L 或 l(ell)为后缀,则它是 long 类型;否则它是 整数 (§4.2.1)。”第 4.2.2 节提到“产生 intlong 类型值的数值运算符”。所以在我的理解中,加法的结果应该是一个int,它不能赋值给char变量c

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

这也许是一个人为的例子,但我一直在教授的 Java 入门类(class)中使用了它,现在我发现我并不真正理解它为什么会起作用。

最佳答案

这是因为编译器可以检查它 ( 'a' + 10 ) 在 char 的范围内,而它不能(通常)检查 'a' + <an integer>在范围内。

关于java - Java 中带有 char 和整数文字的整数运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3680625/

相关文章:

java - Arraylist 将第一个元素生成为 null

java - Android 通过 OpenCsv 写入 CSV 文件

java - 无法显示 Jersey 的 JSP : MessageBodyWriter not found for media type=text/html

java - 如何使用代理设置构建 AmazonSQS

java - 如何将 Web 服务的输入合并到 JPA 实体

java - 在java中将图像缩小到其高度和宽度的一半

java - 无法将属性 'innerHTML' 设置为 null。 AJAX 问题 (java)

Java:将带有 $ref 的复合 JSON 模式反序列化为一个模式

java - 无法将 java.lang.String 类型的对象转换为 com.mycare.OtherClass 类型

java - Android sqlite数据库报错SQLiteException no such column