int类型是八种基本数据类型之一。Integer是int的包装类,因此变量j是一个对象。需要注意的是,JDK1.5及以上版本支持基本数据类型与包装类的直接转换,如:
Integer a = 10; //自动装箱
int b = a; //自动拆箱
因此当执行环境的JDK版本在1.5及其以上时,i==j语句会自动拆箱,结果为true,j.equals(i)语句会自动装箱,结果也为 true。当执行环境的JDK版本在1.5以下时,i==j语句会报错,错误信息为:Incompatible operand types int and Integer,即基本数据类型和对象之间不能进行==操作。语句j.equals(i)也会报错,因为equals(Object o)方法要求实参必须是一个对象。