当前位置: 首页 > 面试题库 >

Java中具有char和integer文字的整数算术

闻人嘉木
2023-03-14
问题内容

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

char c = 'a' + 10;

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

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

Java语言规范(第3.10.1节)指出:“如果整数文字long带有ASCII字母L或l(ell)后缀,则为类型;否则为int(4.2.1节)。”
第4.2.2节提到“数值运算符,其结果是type intlong。”
因此,据我所知,加法的结果应为int,不能将其赋给char变量c

但是,它可以很好地进行编译(至少在Sun JDK 1.6.0发行版17和Eclipse Helios中)。

也许它不是一个人工的示例,但是它在我一直在讲授的Java入门课程中使用,现在我想到我并不真正理解它为什么起作用。


问题答案:

'a' + 10是一个 编译时间常量表达式
与的值'k',其可初始化类型的变量char。这与能够byte在[-128,127]中为变量分配文字整数相同。byte在[128,255]范围内的A
可能更令人讨厌。



 类似资料:
  • 问题内容: 我正在尝试通过使用JavaFX 8的TextFormatter为整数创建数字TextField。 UnaryOperator的解决方案: 使用IntegerStringConverter的解决方案: 两种解决方案都有其自身的问题。使用UnaryOperator,我只能按预期输入0到9之间的数字,但是我还需要输入负数,例如“ -512”,其中仅在第一个位置允许使用符号。我也不希望像“ 0

  • 问题内容: 有人可以告诉我,这为什么不起作用: 我收到以下错误: 为了可以使用运算符,将模型的属性更改为字符串的唯一解决方案是吗? BR 问题答案: JPA不支持Integers的like(),仅支持字符串。一些数据库确实支持整数,而其他则不支持。 EclipseLink应该允许将like()与Integer一起使用(前提是您的数据库支持它)。您使用什么版本?可能需要使用> = 2.1。如果无法在

  • 问题内容: 我有string 我想用惯用的方式计算“.”的出现次数,最好是一行。 之前我曾将这个约束表示为“没有循环”,以防你想知道为什么每个人都试图在不使用循环的情况下回答问题)。 问题答案: 我对此的“惯用一语”是: 当它已经成为公共语言时,为什么还要自己编写呢? Spring Framework的oneliner为此:

  • 在Java中,当使用整数对象而不是基元整数时,什么时候使用比较运算符(例如==、>=、<)是安全的? 印刷品 是否可以使用double equals以外的任何东西(所以>、<、>=和<=是安全的?),或者我应该使用.compareTo()方法?

  • 问题内容: 如果我写下面的代码(在java中): 我的输出是:“等于”,但是如果我将第一行和第二行更改为-> 那么我的输出是: 那么创建Integer对象有什么区别?当我们这样做时如何创建它? 如果我创建并创建另一个对象,是否意味着a和b对象引用相同的对象? 问题答案: ; 称为自动装箱,编译器将此表达式转换为实际 对于较小的数字,默认情况下为-128到127,Integer.valueOf(in

  • 问题内容: 有一些值,例如AB,A012B,CD,1、10、01、9我必须对其进行排序,输出的输出应为01、1、9、10,A012B,AB,CD可以使用任何试图使用collection的collection .sort函数,但将所有内容都视为字符串并像01,1,10,9,A012B,AB,CD一样打印,这不是我的要求…请帮助 问题答案: //捕鱼技术 //不够??? //这是鱼