Chinaunix

标题: 自动装箱和拆箱 [打印本页]

作者: claire2008    时间: 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




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2