在Java中整数比较是棘手的,因为int和Integer表现不同。我明白了。
但是,如本示例程序所示,(Integer)400 (第4行)的
行为不同于(Integer)5 (第3行) 。为什么是这样??
import java.util.*;
import java.lang.*;
import java.io.*;
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
System.out.format("1. 5 == 5 : %b\n", 5 == 5);
System.out.format("2. (int)5 == (int)5 : %b\n", (int)5 == (int)5);
System.out.format("3. (Integer)5 == (Integer)5 : %b\n", (Integer)5 == (Integer)5);
System.out.format("4. (Integer)400 == (Integer)400 : %b\n", (Integer)400 == (Integer)400);
System.out.format("5. new Integer(5) == (Integer)5 : %b\n", new Integer(5) == (Integer)5);
}
}
结果
1. 5 == 5 : true // Expected
2. (int)5 == (int)5 : true // Expected
3. (Integer)5 == (Integer)5 : true // Expected
4. (Integer)400 == (Integer)400 : false // WHAT?
5. new Integer(5) == (Integer)5 : false // Odd, but expected