基本数据类和包装类的区别

Integer i1 = 33;
Integer i2 = 33;
System.out.println(i1 == i2);// 输出true
Integer i11 = 333;
Integer i22 = 333;
System.out.println(i11 == i22);// 输出false
Double i3 = 1.2;
Double i4 = 1.2;
System.out.println(i3 == i4);// 输出false

int i111=333;
int i222=333;
System.out.println(i111 == i222);//输出true

Java 基本类型的包装类的大部分都实现了常量池技术,即Byte,Short,Integer,Long,Character,Boolean;这5种包装类默认创建了数值[-128,127]的相应类型的缓存数据,但是超出此范围仍然会去创建新的对象。
也就是:包装类也是类,当使用“==”判断两个类是否相等时,其实判断的是引用地址是否相同,而不是判断引用的数据是否相同。int是基本数据类型,两个int相比较,比较的是值是否相同。
两种浮点数类型的包装类 Float,Double 并没有实现常量池技术。

总结:
基本数据类型和包装类的区别
(1)声明方式不同,基本类型不适用new关键字,而包装类型需要使用new关键字来在堆中分配存储空间;

(2)存储方式及位置不同,基本类型是直接将变量值存储在虚拟机栈中,而包装类型是将对象放在堆中,然后通过引用来使用;

(3)初始值不同,基本类型的初始值如int为0,boolean为false,而包装类型的初始值为null

(4)使用方式不同,基本类型直接赋值直接使用就好,而包装类型在集合如Collection、Map时会使用到

猜你喜欢

转载自blog.csdn.net/u014138443/article/details/89308702