区别
- Integer 是 int 的包装类,而 int 是 Java 的一种基本数据类型。
- int 变量不需要实例化,Integer 变量必须实例化才可以使用。
- Integer 是对象的引用,当 new 了一个 Integer 之后,实际上是生成了一个指针,该指针指向此对象,int 则是直接存储数据的数值。
- Integer 默认值为 null,int 默认值为 0。
扩展
- 通过 new 生成的两个 Integer 对象永远不相等,因为是两个对象,内存地址不同。
- Integer 变量和 int 变量比较时,只要两个变量的值是向等的,则结果为 true(Integer 与 int 比较时,Java 会自动拆包,实际上变成了两个 int 在比较)
- 非 new 生成的 Integer 变量和 new Integer()生成的变量比较时,结果为 false。(因为非 new 生成的 Integer 变量指向的是 java 常量池中的对象,而 new Integer()生成的变量指向堆中新建的对象,两者在内存中的地址不同)
- 两个非 new 生成的 Integer 对象比较数值的时候,如果值在-128 到 127 之间,返回 true,其余范围则返回 false。
Integer a = new Integer(100);
Integer b = new Integer(100);
System.out.println(a == b); //false
Integer c = new Integer(100);
int d = 100;
System.out.println(c == d); //true
Integer e = new Integer(100);
Integer f = 100;
System.out.println(e == f);//false
Integer g = 100;
Integer h = 100;
System.out.println(g == h); //true
Integer i = 128;
Integer j = 128;
System.out.println(i == j); //false
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于