学习借鉴(其实搬了别人的好多)和自己的理解,可能会有较多错误,如有疑问联系我呀。
- int 是基本数据类型, Integer 是引用类型,也就是一个对象。
- int 储存的是数值,Integer 储存的是引用的对象的地址。
- int 占用内存少、Integer 对象占用内存多,因为它需要存储对象的元数据。
- 不是用 new 生成的 Integer 变量与 new Integer ( ) 生成的变量不同,因为前者是在常量池中的,后者是在堆中的,两个的地址不同。
- 两个不是 new 生成 Integer 对象比较,如果变量的值在 [ -128 , 127 ] 之间,比较结果为 true,否则是 false。
- Integer 变量(无论是否 new 生成的)与 int 类型变量来比较,结果都是 true 。这因为要比较时, Integer都会自动拆箱成 int ,这样子比较就是在比较数值的大小了。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Integer x = new Integer(10);
Integer y = 10;
Integer z = new Integer(10);
int temp = 10;
System.out.println(x == y); //false
System.out.println(x == z); // false
System.out.println(temp == x); // false
System.out.println(temp == y); // false
}
}