Java中int和Integer的区别

1、基本区别。

① int是Integer的基本类型,Integer是int的包装类型。

② Integer变量需要实例化后才能使用,且默认值为null;int不需实例化,默认值为0。

③ Integer实例化是指针指向此对象,int直接存储数据的值。

2、容易混淆的区别。

① new生成的是两个对象,其内存地址不同。

Integer i = new Integer(100);
Integer j = new Integer(100);
System.out.print(i == j); //false

② Integer i=100即Integer i = Integer.valueOf(100),在源码中对于-128~127的数字会被缓存,在此区间的变量值相等。

Integer i = 100;
Integer j = 100;
System.out.print(i == j); //true
扫描二维码关注公众号,回复: 2647369 查看本文章

③ 不在-128~127区间的变量需新建Integer对象,即和第五种情况相似,其内存地址不同。

Integer i = 200;
Integer j = 200;
System.out.print(i == j); //false

④ Integer和int比较时,java会将Integer自动拆包装为int然后进行比较,实际即为两个int变量的比较。

Integer i = new Integer(200);
int j = 200;
System.out.print(i == j); //true

⑤ new Integer()生成的变量指向中新建的对象,不是new生成的Integer变量指向的是Java常量池中的对象,其内存地址不同。

Integer i = new Integer(100);
Integer j = 100;
System.out.print(i == j); //false

请各位多加指教。
 

猜你喜欢

转载自blog.csdn.net/a515557595_xzb/article/details/79113600