我通过在下面将Integer更改为int来修复无限循环:
public class IntTest {
public static void main(String[] args) {
Integer x=-1;
Integer total=1000;
while(x != total){
System.out.println("x =" + x + "total ="+ total);
x++;
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是什么原因?我认为Integer会比较没问题.
谢谢.
Vla*_*nov 17
因为当你做对象时=比较对象它会比较引用.一般情况下两个对象之间的引用是不同的.
比较整数时,它总是比较基元,假设不是引用(没有对象),而是值.
因此,如果您想使用Integer,则必须对它们使用equals().
此外,如果您的值介于0和255之间,则Integer之间的比较可以正常工作,因为缓存.
你可以在这里阅读:http://download.oracle.com/javase/tutorial/java/data/numberclasses.html
Integer是一个Object,并与对象进行比较.equals(..)
只比较基元 ==
这就是规则,除了一些特殊情况下,== 可以被用来比较的对象.但即便如此,这也是不可取的.
| 归档时间: |
|
| 查看次数: |
25618 次 |
| 最近记录: |