zoukankan      html  css  js  c++  java
  • 《疯狂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);
            }
            
        }
    }
  • 相关阅读:
    字节码编程,Javassist篇四《通过字节码插桩监控方法采集运行时入参出参和异常信息》
    字节码编程,Javassist篇三《使用Javassist在运行时重新加载类「替换原方法输出不一样的结果」》
    字节码编程,Javassist篇二《定义属性以及创建方法时多种入参和出参类型的使用》
    字节码编程,Javassist篇一《基于javassist的第一个案例helloworld》
    CPU瞒着内存竟干出这种事
    可怕!CPU竟成了黑客的帮凶!
    完了!CPU一味求快出事儿了!
    如果平行宇宙也有编程语言
    你离黑客的距离,就差这20个神器了
    哈希表哪家强?几大编程语言吵起来了!
  • 原文地址:https://www.cnblogs.com/CocoonFan/p/2945342.html
Copyright © 2011-2022 走看看