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

知道为什么我需要在此处将整数转换为(int)吗?

弘承业
2023-03-14
问题内容

在下面的例子中

int i = -128;
Integer i2 = (Integer) i; // compiles

Integer i3 = (Integer) -128; /*** Doesn't compile ***/

Integer i4 = (Integer) (int) -128; // compiles
Integer i4 = -128; // compiles
Integer i5 = (int) -128; // compiles
Integer i6 = (Integer) (-128); // compiles
Integer i7 = (Integer) 0-128; // compiles

我不能投-128(Integer),但我可以投(int) -128

我一直以为-128int类型,将其强制转换(int)应该是多余的。

与线上的错误i3

cannot find symbol variable Integer

我在Java 6 Update 29和Java 7 Update 1中进行了尝试。

编辑:你有获得相同的行为+128,而不是-128。一元运算符和二元运算符之间确实存在混淆。


问题答案:

编译器试图减去128(Integer)代替铸造-128Integer。添加()修复

Integer i3 = (Integer) -128; // doesn't compile
Integer i3 = (Integer) (-128); // compiles

根据BoltClock的评论,强制转换 int按预期工作,因为它是保留字,因此不能解释为标识符,这对我来说很有意义。

Bringer128找到了JLS参考15.16。

 _**CastExpression:
    (PrimitiveType Dims opt)一元表达式
    (ReferenceType)UnaryExpressionNotPlusMinus**_

如您所见,强制转换为基本类型需要任何UnaryExpression,而强制转换为引用类型需要UnaryExpressionNotPlusMinus。它们在JLS
15.15
的CastExpression之前定义。



 类似资料:
  • 问题内容: 我的朋友正在尝试将某种计算作为上课的一项任务,但他遇到了一些麻烦…希望您能为他提供帮助。 问题在于他从用户那里得到了一个int的输入(这必须是任务的一部分)。他正在尝试在下面的代码中将其转换为double,但这是行不通的。无论如何结果都是int。 如果您需要更多说明,我会请他提供。提前致谢! 问题答案: 您必须将一个(或两个)参数传递给除法运算符: 由于您两次执行相同的计算,因此建议您

  • 问题内容: Java中的所有数字都应为int类型。以下行在Java> 1.5中是合法的 同样的机制去和实例。但是龙的作品完全不同。以下代码给出了编译时错误 Long对长类型使用自动装箱方法,因此 我看不到为什么不能将int赋给Long变量。关于这个问题有什么想法吗? 问题答案: 我认为问题不在于泛型转换原语和包装。问题是关于将int转换为java.lang.Long和将int转换为java.lan

  • 问题内容: 您可以将int隐式转换为double: 您可以将int显式转换为double: 您可以将double显式转换为int: 为什么不能将一个double隐式转换为int? : 问题答案: 的范围比宽。这就是为什么您需要显式强制转换。由于相同的原因,您不能隐式地从转换为:

  • 我正在创建一个方法,该方法将接受给定的输入并将值设置为“plate”。然后,我继续使用charAt方法,尝试获取字符(字母/字符串)输入并将其设置为新值。但我被告知要将其设置为char值。当我用它运行aprint语句时,输出只是一组整数,或者在我的情况下(对于我将要显示的代码),当我将车牌设置为abc 123时,它输出“195”。此外,该模型没有做任何事情(或者至少不应该做)。如果有人能告诉我我到

  • 问题内容: 这应该很简单: 这将导致错误: 0 strconv.ParseInt:解析“ 1250000.0000”:无效的语法 有什么线索吗? 问题答案: 仅适用于可解析为整数的字符串。 您需要的是parseFloat

  • 问题内容: 我正在尝试将url参数传递给这样的django模板… 这是我的views.py文件中的调用行。persistConTemplate.html是我的模板的名称,request.GET是包含url参数的字典。 在模板中,我尝试使用像这样的参数之一… numItems是我在请求中这样发送的url参数之一… 当我尝试上面的for循环时,我得到这样的输出。 我期待并希望看到字图像印刷12次… 谁