一、java中八种基本数据类型对应的包装类型 基本数据类型 包装类型 byte java.lang.Byte short java.lang.Short int java.lang.Integer long java.lang.Long float java.lang.Float double java.lang.Double boolean java.lang.Boolean char java.lang.Character |
二.在java中,当基本类型与他们的父类类型运算的时候就会自动转换类型,叫做装箱与拆箱。
Integer a=10;上述代码会输出结果为:20.原因Integer为引用类型,是不能够进行加法运算的,当他与10相加时,会自动转换类型为int。这个过程我们叫做拆箱。
System.out.println(a+10);
上述代码第一句,我们知道Integer是一个引用类型,也就是一个类。当我们在实现一个类的时候,我们会用到这样的语法Class A = new Class()。这才是实现一个类的语法,那为什么Integer我们可以直接赋值呢,实质上当我们在运行Integer a=10这条语句时,系统自动为我们运行了Integer a = new Integer(10);这就是装箱。
在自动装箱与拆箱中还有个小细节,看下列代码:
Integer a= 10;
Integer b= 10;
Integer c= 345;
Integer d= 345;
System.out.println(a==b);
System.out.println(c==d);
输出结果为true,false.原因在于在java的自动装箱与拆箱中使用了享元模式。当数值范围为一个字节时也就是-128~127时,系统会将我们创建的对象放在缓冲区,我们称之为整形池。当下次我们再次去创建的时候,系统直接将我们创建的当前引用引用到缓冲中已有的对象,而当数值超过这个范围时,系统就不在缓冲,则会新创建一个引用