区别:
- int是基本数据类型,Integer是引用数据类型;
- int默认值是0,Integer默认值是null;
- Integer实际是对象的引用,指向此new的Integer对象;int是直接存储数据值 ;
- int类型直接存储数值,Integer需要实例化对象,指向对象的地址。
package HelloWorld;
public class Intandinteger {
@SuppressWarnings("removal")
public static void main(String[] args) {
//-128 ~ +127 之间
Integer a = 5;
int b = 5;
@SuppressWarnings("removal")
Integer c = new Integer(5);
Integer d = 5;
System.out.println(a.equals(b)); //true
System.out.println(a == b);
System.out.println(a.equals(c));
System.out.println(a == c);
System.out.println(a == d);
//-128 ~ +127 之外
a = 128;
b = 128;
c = new Integer(128);
d = 128;
System.out.println(a.equals(b));
System.out.println(a == b);
System.out.println(a.equals(c));
System.out.println(a == c);
System.out.println(a == d);
}
}
结果为:
true
true
true
false
true
true
true
true
false
false综上,我们可以得出几个结论:
1、都是封装类,都是new出来的,肯定不相等。因为对象的内存地址不一样。
2、都是封装类,都不是new出来的,如果值在-128~127之间,那就相等,否则不相等。
3、如果是封装类和基本类型进行比较,只要数值相等那就相等,否则就不相等。因为封装类和基本数据类型进行比较的时候会有一个自动拆箱操作。
4、都是基本数据类型,如果数值相等,那就相等;否则不相等。