《疯狂Java讲义精粹》读书笔记4 ---- 基本包装类

------------《疯狂Java讲义精粹》读书笔记5--------------

Java 是面向对象的语言,它既保留了8中基本数据类型,也提供了8中相对应的包装类(Wrapper Class):

 
基本数据类型 byte        short      int  long       char float        double    boolean
对应的包装类 Byte Short Integer Long Character Float Double Boolean

 8个包装类除了Character之外可以传入相应的值来初始化,也可以传入字符串初始化。

包装类对象和基本类型变量的转化关系如下:

下面用代码说明:

public class TestWrapper {
    public static void main(String[] args) {
        
        /**
         * 8个包装类除了Character之外可以传入相应的值来初始化,
         * 也可以传入字符创初始化。
         */
        double d = 0.5;
        String str = "123.4";
        Double doubleObj1 = new Double(66.6);//直接构建
        Double doubleObj2 = new Double(d);//传入对应类型的变量
        Double doubleObj3 = new Double("98.9");//传入正确的字符串
        Double doubleObj4 = new Double(str);//传入相应的字符串变量
        
        
        System.out.println(doubleObj1);
        System.out.println(doubleObj2);
        System.out.println(doubleObj3);
        System.out.println(doubleObj4);
        
        /**
         * 另外创建Boolean类时true 和 false的大小写不做区分
         */
        Boolean blObj = new Boolean("FALsE");
        System.out.println(blObj);
        
        /**
         * 如果希望获得包装类对象中包装的基本类型变量,可以使用包装类提供的
         * xxxValue()实例方法。
         */
        //取出doubleObj1中的基本类型变量
        System.out.println("\n--------------------");
        double d1 = doubleObj1.doubleValue();
        System.out.println(d1);
    }
}

输出结果为:

66.6
0.5
98.9
123.4
false


--------------------
66.6

 

  很明显这种转换的方式太复杂了,Java1.5之后提供了自动装箱(Autoboxing)自动拆箱(AutoUnboxing)功能,自动装箱可以把一个基本类型的变量直接赋给对应的包装类变量,或者赋给Object变量;自动拆箱可以把包装类型的对象赋给一个对应类型的基本变量。

  下面是一个例子:

/**
 * 自动装箱、拆箱
 * @author <<疯狂Java讲义精粹>>
 *
 */
public class TestAutoBoxingUnboxing {
    public static void main(String[] args) {
        //直接把一个基本类型的变量赋给integer对象
        Integer inObj = 5;
        
        //直接把一个boolean类型的变量赋给一个Object类型变量
        Object boolObj = true;
        
        //直接把一个Integer对象赋给int类型变量
        int in = inObj;
        
        if(boolObj instanceof Boolean){
            //先把Object对象强制转换成Boolean类型,再赋值给boolean变量
            boolean b = (Boolean)boolObj;
            System.out.println(b);
        }
        
    }
}

 

posted @ 2013-03-06 01:48  Cocoon  阅读(336)  评论(0编辑  收藏  举报