Java--包装类型
一。Java中八种基本数据类型对应的包装类型
基本数据类型 包装类型
bytes java.lang.Bytes;
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要提供这种包类型呢?
方便。举个例子,当创建一个方法时,我们想调用的时候往里面可以传入所有类型的参数,那我们形式参数就设置为object类型。可是基本数据类型的基类又不是object,那使用相应的包装类型就可以了。
三,包装类型的常用方法(以Integer为例,其余同理)
主要就是:int Integer String类型之间的相互转换
1. int-->Integer
Integer i1 = Integer . valueOf ( 10 );
2. String-->Integer
Integer i2 = Integer . valueOf ( "10" );
3. Integer-->int
int i3 = i1. intValue( );
4. String-->int
int i4 = Interger . parseInt ( "123" );
5. int-->String
String s2 = 10 + "";
6. Integer-->String
String s1 = i1 . toString ()
注:比较两个Integer类型的数据是否相等,不能用“==”,得用Object中的equals方法(Integer已将其重写)
四,JDK5.0(及以后)新特性:自动装箱(auto_boxing),自动拆箱(auto_unboxing)
繁琐写法:
//int-->Integer(装箱)
Integer i1 = new Integer ( 10 ) ;
//Integer-->int(拆箱)
int i2 = i1 . intValue();
自动装箱:
Integer i3 = 10 ;
自动拆箱:
int i4 = i3;
*深入理解自动装箱和自动拆箱:
&1.自动装箱和自动拆箱是程序编译运行阶段的一个概念,与程序执行无关
&2.自动装箱和自动拆箱的目的是为了方便程序员编码
五,自动装箱和自动拆箱的内存分析(以Integer类型为例)
1,java在 方法区内存 中引入了一个“整形常量池”(一块内存空间),该整形常量池只存储了-128~127之间的数据。当变量在相应的范围内的时候,程序并不会在堆内存中创建对象,而是会直接创建一个引用,指向整形常量池中所需要的数据
例如:
Integer i5 = 127 ;
Integer i6 = 127;
System.out.println (i5 == i6);//结果为true
Integer i9 = -129 ;
Integer i10 = -129;
System.out.println (i9 == i10);//结果为false