免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1233 | 回复: 0
打印 上一主题 下一主题

自动装箱和拆箱 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-22 20:54 |只看该作者 |倒序浏览
打包(Wrap)基本数据类型

基本数据类型:long、int、double、float、boolean、byte等。在JAVA中这些并不是对象,它们只是纯粹的数据,除了数值本身的信息之处,基本数据类型不带有其他的信息或可操作的方法。在J2SE5.0之前,如果想要让基本数据类型能像对象一样操作,那么要使用Long、Integer、Double、Float、Boolean、Byte等类来打包基本数据类型。如:


public class WrapperDemo{
  public static void main(String[] args){
    int data1 = 10;   
    int data2 = 20;
//使用Integer来打包int数据
    Integer data1Wrapper=new Integer(data1);
    Integer data2Wrapper=new Integer(data2);
//直接除以3
    System.out.println(data1 / 3);
//转为double值再除以3
    System.out.println(data1Wrapper.doubleValue() / 3);
//进行两个值的比较
    System.out.println(data1Wrapper.compareTo(data2Wrapper));
}
}
执行结果:
3
3.3333333333333335
-1
自动装箱和拆箱:
在J2SE5.0之后提供了自动装箱和拆箱功能,你可以直接使用以下语句来打包基本数据类型:Integer integer=10;在进行编译时,编译器再自动根据您写下的语句,判断是否进行自动装箱动作。直接改写上面的代码:
public class AutoBoxDemo{
  public static void main(String[] args){
    Integer data1 = 10;   
    Integer data2 = 20;
//转为double值再除以3
    System.out.println(data1.doubleValue() / 3);
//进行两个值的比较
    System.out.println(data1.compareTo(data2));
}
}
执行结果:
3.3333333333333335
-1
自动装箱运用还可以如下:
int i = 10;
Integer integer = i;也可以使用更一般化的java.lang.Number类来自动装箱。如:Number number=3.14f;  3.14f会先被自动装箱为Float,然后指定给number。还可以:Integer fooInteger = 10; int fooprimitive=fooInteger; fooInteger引用至自动装箱为Integer的实例后,如果被指定一个int类型的变量fooPrimitive,则会自动变为int类型再指定给fooprimitive。
(注)不要过分依赖自动装箱和拆箱,你还是必须知道基本数据类型与对象的差异,否则容易出错。



本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/69626/showart_1735430.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP