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

原文地址:https://www.cnblogs.com/RosemaryJie/p/13199409.html