在Java中将Integer转换为int

Kai*_*Kai 1 java integer

编写Java代码时,我发现一个非常奇怪的情况:

Integer x = myit.next();
if ((int)x % 2 == 0) {
Run Code Online (Sandbox Code Playgroud)

其中myit是迭代器,x是整数.我只是想测试x是否是偶数.但是x%2 == 0不起作用,因为eclipse说%没有在Integer上定义.然后我尝试通过显式转换将x转换为int.再一次,它警告我不能以这种方式转换.

它出现的原因是什么,以及测试x是否均匀的正确方法是什么?

更新:无论如何,我测试以下代码是否有效,这意味着你们所有人都是对的.

    Integer x = 12;
    boolean y = ( (x % 2) == 0 );
    boolean z = ( (x.intValue() % 2) == 0 );
Run Code Online (Sandbox Code Playgroud)

我认为我之前遇到的问题可能是代码的上下文.这是深夜,如果我发现为什么会发生这种情况,我会稍后更新.

The*_*ind 5

使用 :

if (x.intValue() % 2 == 0)
Run Code Online (Sandbox Code Playgroud)

PS:if(x % 2==0)也应该有效,因为integer.intValue()应该在内部调用.

字节代码:if(x % 2==0)

   11:  invokevirtual   #23; //Method java/lang/Integer.intValue:()I   --> line of interest
   14:  iconst_2
   15:  irem
Run Code Online (Sandbox Code Playgroud)

  • 这不是必需的.您可以将`%`与`Integer`一起使用. (2认同)