首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >你知道为什么我需要在这里将一个整数转换为(int)吗?

你知道为什么我需要在这里将一个整数转换为(int)吗?
EN

Stack Overflow用户
提问于 2011-10-26 16:14:30
回答 5查看 6K关注 0票数 122

在以下示例中

代码语言:javascript
复制
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

我不能在(Integer)中使用-128,但我可以使用(int) -128

我一直认为-128int类型的,用(int)来转换它应该是多余的。

i3命令行上的错误是

代码语言:javascript
复制
cannot find symbol variable Integer

我在Java6更新29和Java7更新1中尝试了这一点。

编辑:使用+128而不是-128可以获得相同的行为。这似乎是一元运算符和二元运算符之间的混淆。

EN

回答 5

Stack Overflow用户

发布于 2011-10-26 16:19:43

编译器将-解释为两个参数的减号运算符,即它试图从另一个名为Integer的数字中减去128,但作用域中没有这样的变量。

这将进行编译:

代码语言:javascript
复制
Integer i3 = (Integer) (-128)
票数 12
EN

Stack Overflow用户

发布于 2011-10-26 16:20:42

这可能与语法分析有关。请注意,

代码语言:javascript
复制
Integer i4 = (Integer) (-128); 

工作得很好。

通常,不应强制转换为Integer类。这涉及到所谓的自动装箱,并且可能会在代码中导致一些细微的错误。做你想做的事情的首选方法是:

代码语言:javascript
复制
Integer i6 = Integer.valueOf(-128)
票数 9
EN

Stack Overflow用户

发布于 2011-10-26 16:21:11

它将其解析为Integer <minus operator> 128,但没有找到变量Integer。您需要将-128括在方括号中:

代码语言:javascript
复制
Integer i3 = (Integer) (-128);  // compiles
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7900198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档