Java包装类

文章介绍了Java中的包装类,包括它们的由来、优点,详细阐述了装箱和拆箱的过程,以及JDK5后的自动装箱和拆箱特性。包装类的缓冲值特性在Integer等类中体现在对特定范围数值的复用,以节省内存。此外,文章还提到了包装类提供的转换方法,如toBinaryString、parseInt等。
摘要由CSDN通过智能技术生成

包装类的由来

  • Java是面向对象的编程语言,主要依靠创建对象来存储和加工数据.
  • 但对象的开辟必须占用堆内存的空间,事事对象化反而适得其反,
  • 故用基本数据类型来存储最基本的数据,但也必然有对应的引用数据类型,此为包装类
  • 以下为对应关系
  • 基本数据类型首字母大写即为包装类,Integer和Character除外
  • 基本数据类型引用数据类型
    intInteger
    charCharacter
    byteByte
    shortShort
    longLong
    floatFloat
    doubleDouble
    booleanBoolean

包装类的优点

  • 集合类是类似于数组的结构,但长度可变,
  • 在实际开发中经常使用,但集合元素只能为对象
  • 但集合中填装基本数据类型又是迫切且无法避免的.
  • 故通过将基本数据类型进行"装箱"变为包装类,来实现此功能.
  • 另一点,包装类提供了基本数据类型无法具有的方法和属性,
  • 如Integer.MAX_VALUE和integer.MIN_VALUE来获取int类型的最大值和最小值

包装类的拆箱和装箱

  • 拆箱即为包装类转为基本数据类型,装箱即为反推.
  • 在JDK5以前,可以通过调用构造方法或调用静态方法来进行拆箱或装箱.这种方式叫做手动拆箱和装箱.
  • 下面以最常用的int的Integer包装类来进行说明,其他包装类一概论之.
  • 演示,如何装箱
//可供调用的两个重载的构造方法
public Integer(int value)      //根据传递的整数创建一个Integer对象
public Integer(String s)       //根据传递的字符串创建一个Integer对象
//演示,如何装箱
Integer i1 = new Integer(1);    //传递参数为整数
Integer i2 = new Integer("1");  //传递参数为字符串,该构造方法能识别其为1

//可供调用的多个重载的静态方法,valueOf中Of首字母大写
public static Integer valueOf(int i)	          //根据传递的整数创建一个Integer对象
public static Integer valueOf(String s)	          //根据传递的字符串创建一个Integer对象
public static Integer valueOf(String s,int radix) //根据传递的字符串和进制创建一个Integer对象
\\演示,如何装箱
Integer.valueOf(1);                                //传递参数为整数
Integer.valueOf("1");                              //传递参数为字符串
Integer.valueOf("123",8);                          //传递参数为字符串,进制为二进制,结果为173
Integer.valueOf("123",16);                         //进制为十六进制,结果为7B

  • 演示,如何拆箱
//拆箱只有调用Integer类中方法才行才能完成,没有对应的静态方法
public int intValue()
//演示,如何拆箱
i1 = Integer.valueOf(1);                          //用先装箱,再拆箱
n = i1.intValue();                                    
System.out.println(n);                            //其值为1
  • JDK5以后,出现了自动装箱和拆箱
  • 示例
Integer i1 = 1;                                   //自动装箱,用的是valueOf静态方法
Integer i2 = new Integer(1);                      //自动拆箱
int i3 = i2

包装类的缓冲值

  • 以Integer为例
  • 装箱时会在堆中占有内存以创建对应对象,为了节约内存,静态方法valueOf()在一定数值范围内,相同数值对应对象地址相同,Integer为[-128,127],
  • 超范围外的数值则对应对象地址不同
  • 包装类对应缓冲值(float和double为浮点型变量类型,一定范围内的数据可以极其多,故没有)
  • 包装类缓冲值
    Integer,Byte,Short,Long[-128,127]
    Char[0,127]
    Booleantrue,false
    float,double
  • 调用构造方法则没有缓冲值这一概念.

包装类的成员方法

  • 以Integer为例
//前三个成员方法返回值为String,因为这些进其制位数可能很多,只能用字符串装,最后一个则为前三个服务
public static String toBinaryString(int i)	//得到i对应二进制
public static String toOctalString(int i)	//得到i对应八进制
public static String toHexString(int i)  	//得到i对应十六进制
public static int parseInt(String s)    	//把字符串类型的整数转成int类型的整数
//演示
String str1 = Integer.toBinaryString(100);
System.out.println(str1);                   //二进制1100100
String str2 = Integer.toOctalString(100);
System.out.println(str2);                   //八进制144
String str3 = Integer.toHexString(100);
System.out.println(str3);                   //十六进制64
int n = Integer.parseInt("100");            
System.out.println(n);                      //打印100 
  • 注意:除了Character,都有对应的parseXxx,理由也显而易见
    最后笔者希望这杯Java满你心意,愿一键三连,感谢支持!!!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值