A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 创造命运 中级黑马   /  2014-4-6 21:46  /  860 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 创造命运 于 2014-4-7 06:17 编辑

一、java中八种基本数据类型对应的包装类型
        基本数据类型                包装类型
        byte                                        java.lang.Byte
        short                                java.lang.Short
        int                                        java.lang.Integer
        long                                        java.lang.Long

        float                                        java.lang.Float
        double                                java.lang.Double

        boolean                                java.lang.Boolean

        char                                        java.lang.Character

二、包装类层次结构图


三、基本数据类型的包装类型是大同小异的,以下以java.lang.Integer为例,理解八种基本数据类型的包装类型。
        public class BaoZhuangLei
        {
                public static void main(String[] args)
                {
                        //获取int类型的最大值和最小值
                        System.out.println("int最小值"+Integer.MIN_VALUE);
                        System.out.println("int最大值"+Integer.MAX_VALUE);

                        //创建Integer类型的对象
                        Integer i1 = new Integer(10);     //int--->Integer
                        Integer i2 = new Integer("123");  //String---->Integer
                        System.out.println(i1);  //10
                        System.out.println(i2);  //123

                        //一下程序编译可以通过,但是运行的时候会出错:数字格式化异常
                        //Integer i3 = new Integer("abc");   //NumberFormatException

                        /*
                                将int类型的十进制数据转换成2进制,8进制,16进制
                                Integer.toBinaryString(int);
                                Integer.toHexString(int);
                                Integer.toOctalString(int);
                        */
                        String str = Integer.toBinaryString(10);   //1010
               


                        /******        Integer    int    String    三种数据类型相互转换            ******/
                        // int--->Integer
                        Integer a1 = Integer.valueOf(10);
                        // Integer--->int
                        int a2 = a1.intValue();

                        // String--->Integer
                        Integer a3 = new Integer("234");
                        // Integer--->String
                        String s1 = a3.toString();

                        // String--->int
                        int a4 = Integer.parseInt("234");
                        // int--->String
                        String s2 = a4 + "";
                        String s3= 10 + "";
                        System.out.println(s2);   //234
                }
        }

四、关于包装类与基本数据类型的自动装、拆箱
        /*
                1.自动装箱和自动拆箱是程序在编译阶段的一个概念,和程序运行无关
                2.自动装箱和自动拆箱的主要目的是方便程序员编码
        */
        public class BaoZhuangLei
        {
                public static void main(String[] args)
                {
                        //JDK5.0之前
                        //int-->Integer(装箱)
                        Integer i1 = new Integer(10);
                        //Integer-->int(拆箱)
                        int i2 = i1.intValue();

                        //JDK5.0之后
                        Integer i3 = 10;  //自动装箱
                        int i4 = i3;      //自动拆箱
                        System.out.println(i3);


                        Integer i5 = new Ingeter(12);
                        Integer i6 = new Ingeter(12);
                        //这里不会有自动拆箱,i5与i6是两个不同的对象,它们的地址是不同的
                        System.out.println(i5==i6);   //false,这里比较的是地址
                        System.out.println(i5.equals(i6));   //true,表示Integer已经重写了Object中的equals方法

                        //重点:
                        Integer i7 = 128;   //等同于Integer i7 = new Ingeter(128);
                        Integer i8 = 128;   //等同于Integer i8 = new Ingeter(128);
                        System.out.println(i7==i8);   //false,这里比较的是地址
                        /*
                                需要注意的是:
                                java中引入了一个“整型常量池”,存储在方法区中,该常量池只存储“-128~127”之间的数据
                        */
                        Integer a1 = 127;
                        Integer a2 = 127;
                        System.out.println(a1==a2);   //true,比较地址,但是a1与a2的地址都是127在整型常量池中的地址

                        Integer a3 = -128;
                        Integer a4 = -128;
                        System.out.println(a3==a4);   //true,比较地址,只不过a3与a4的地址都是-128在整型常量池中的地址

                        Integer a5 = -129;
                        Integer a6 = -129;
                        System.out.println(a5==a6);   //false,同样此处比较的也是地址,但是-129却没有被保存在整型常量池中
                }
        }


您需要登录后才可以回帖 登录 | 加入黑马