编写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)
我认为我之前遇到的问题可能是代码的上下文.这是深夜,如果我发现为什么会发生这种情况,我会稍后更新.
使用 :
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)
| 归档时间: |
|
| 查看次数: |
168 次 |
| 最近记录: |