java 装箱 拆箱的作用_Java中的装箱拆箱

一)  装箱与拆箱

Java中有概念是一切皆对象,因为所有的类都默认继承自Object。但是,对于数据类型是个例外,如short,int,long,float,double, byte,char,boolean。为了同一“一切接对象“这个概念,Java提供了装箱和拆箱功能。

也就是说Java为上面这八种数据类型提供了对应的Java类(包装类)实现。如下:

int

Integer

short

Short

long

Long

float

Float

double

Double

byte

Byte

char

Character

boolean

Boolean

将基本数据类型包装为Java类的过程成为装箱

将Java类转换为基本数据类型的过程成为拆箱

下面以int数据为例,演示装箱和拆箱:

packageorg.lyk.main;import org.lyk.entities.*;public classMain

{public static voidmain(String[] args)

{

Integer num1= new Integer(33);//装箱

int num2 = num1.intValue();//拆箱

System.out.println(num1 * 2);

System.out.println(num2* 2);

}

}

对于float,double等其它数据类型,Java也提供了如floatValue(),doubleValue()等函数用于拆箱操作。

一)  自动装箱与拆箱

上面的代码要我们显示的调用Integer构造函数装箱,然后调用intValue()函数拆箱。这样显得比较臃肿也不利于使用,为此Java提供了自动装箱与拆箱。请看下面的代码演示:

packageorg.lyk.main;import org.lyk.entities.*;public classMain

{public static voidmain(String[] args)

{

Integer num1= 33;int num2 =num1;

System.out.println(num1* 2);

System.out.println(num2* 2);

}

}

自动装箱/拆箱不用我们手动去写构造和调用拆箱函数,一切都自动完成。这样它的使用和普通数据类型没有任何区别了。

一)  数据类型划分

前面提到的八种数据类型,其实可以再分为两大类:

数值型(Number的直接子类):Short,Integer,Long,Double,Float,Double

对象型(Object的直接子类):Character,Boolean

二)  Object接收基本数据类型

有了装箱拆箱,我们可以用Object接收基本数据类型。

packageorg.lyk.main;import org.lyk.entities.*;public classMain

{public static voidmain(String[] args)

{

Object num1= 33;//先将33自动装箱为Integer,在默认向上转型为Object

int num2 = (Integer)num1;//先将Object强制向下转型为Integer,然后再自动拆箱为num2

System.out.println(num1);

System.out.println(num2);

}

}

上面代码中的注释已经解释了Object接收基本数据类型的过程。所以,在Java中,任何对象都可以用Object来接收,可以说“Object一统天下“了!

三) 基本数据类型与String的转换

使用上面提到的包装类,最大的好处是可以和String类型相互转换

基本数据类型转换为String,用包装类的partXXX()方法

String类型转换为基本数据类型,用String.valueOf()方法

以int数据为例:

packageorg.lyk.main;import org.lyk.entities.*;public classMain

{public static voidmain(String[] args)

{

{//基本数据类型转换为String

int num1 = 33;

Integer num2= 44;

System.out.println(String.valueOf(num1));

System.out.println(String.valueOf(num2));

}

{//String转换为基本数据类型

String str = "123";int num1 =Integer.parseInt(str);

Integer num2=Integer.parseInt(str);

System.out.println(String.valueOf(num1));

System.out.println(String.valueOf(num2));

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值