美文网首页
进阶:包装类

进阶:包装类

作者: 雪上霜 | 来源:发表于2020-04-30 09:20 被阅读0次
    image.png
    package com.Hanjiangxue.javase.integer;
    
    //java中为8种基本数据类型又对应准备了8种包装类型。8种包装类属于引用数据类型,父类为Object
    //思考:为什么要再提供8中包装类呢?
    
    public class IntegerTest01 {
        //入口
        public static void main(String[] args) {
            //有没有这种需求:调用doSome方法时需要一个数字进去。
            //但是数字属于基本数据类型,而doSome方法参数类型Object。
            //可见doSome方法无法接收基本数据类型的数字,那么怎么办呢?可以传一个数字对应的包装类进去。
            //先将数字包装成对象。
    
            MyInt m = new MyInt(100);
            doSome(m);
    
        }
    
        public  static void doSome(Object obj){
            System.out.println(obj);
        }
    }
    
    
    class MyInt{
        int value;
    
        public MyInt() {
        }
    
        public MyInt(int value) {
            this.value = value;
        }
    
        @Override
        public String toString() {
            return String.valueOf(value);
        }
    }
    
    
    package com.Hanjiangxue.javase.integer;
    
    
    /*
        8中基本数据类型包装类型名:
        基本数据类型                  包装数据类型
        ---------------------------------------
        byte                        java.lang.Byte(父类 Number)
        short                       java.lang.Short(父类 Number)
        int                         java.lang.Integer(父类 Number)
        long                        java.lang.Long(父类 Number)
        float                       java.lang.Float(父类 Number)
        double                      java.lang.Double(父类 Number)
        boolean                     java.lang.Boolean(父类 Object)
        char                        java.lang.Character(父类 Object)
    
    Number是一个抽象类。
    
    //引用数据类型转向基本数据类型。
        byteValue()
        shortValue()
        intValue()
        longValue()
        floatValue()
        doubleValue()
    
    Integer构造方法:
        Integer(int)
        Integer(String)
    */
    public class IntegerTest02 {
        public static void main(String[] args) {
            //基本数据类型转换为引用数据类型
            Integer i = new Integer(123);//出现横线表示已过时、
            //引用数据类型转换为基本数据类型
            float f = i.floatValue();
            System.out.println(f);
    
            Integer in = new Integer("123");
            System.out.println(in);
    
            System.out.println(Integer.MAX_VALUE);
            System.out.println(Integer.MIN_VALUE);
    
            //在JDK1.5之后支持自动装箱和拆箱。
    
            //自动装箱
            Integer x = 100;
    
            //自动拆箱。
            int y = x;
        }
    }
    
    
    package com.Hanjiangxue.javase.integer;
    
    public class IntegerTest03 {
        public static void main(String[] args) {
            //900是基本数据类型
            //x是包装类型
            //基本数据类型-->自动转换-->包装类型:自动装箱
            Integer x = 100;
            System.out.println(x);
            //包装类型-->自动转换-->基本数据类型:自动装箱
            int y = x;
            System.out.println(y);
    
            Integer z = 1000;
            System.out.println(z+1);//z自动转换成基本数据类型,因为+号两边为基本数据类型。
    
            Integer a = 1000;
            Integer b = 1000;
            System.out.println(a == b);//比较的是a,b两个引用的内存地址。==不会自动拆箱
    
            //只有四则运算时才会自动拆箱,自动装箱
    
    
    
    
        }
    }
    
    
    package com.Hanjiangxue.javase.integer;
    
    //Integer重要面试题。
    public class IntegerTest04 {
    
        public static void main(String[] args) {
            Integer a = 128;
            Integer b = 128;
            System.out.println(a == b);//false
    
            Integer z = 127;
            Integer x = 127;
            System.out.println(x == z);//true
    
            //Java中为了提高程序执行效率,将[-128-127]之间的所有包装对象提前创建好,放到一个方法区整数型常量池中
            //目的是只要用这个区间的数据不需要在new了,直接从整数型常量池中取出。
    
            //原理:x变量中保存的对象的内存地址和z变量保存的对象内存地址是一样的。
        }
    }
    
    
    package com.Hanjiangxue.javase.integer;
    //空指针异常:NullPointerException
    //类型转换异常:ClassCastException
    //数组下标越界异常:ArrayIndexOutOfBoundsException
    //数字格式化异常:NumberFormatException
    
    public class IntegerTest05 {
        public static void main(String[] args) {
            Integer x = new Integer(100);
    
    
            int y = x.intValue();
            System.out.println(y);
    
            //Integer s = new Integer("中文");//运行时出现异常
    
            //重点方法
            //static int parseInt(String s)
            //静态方法,传参String,返回int
            //网页上输入的数字为字符串,所以需要转换成数字。
            System.out.println(Integer.parseInt("123"));
    
            System.out.println(Double.parseDouble("12")+1);
    
            //static String toBinaryString(int i)
            //将十进制转换成二进制
            System.out.println(Integer.toBinaryString(10));
            System.out.println(Integer.toHexString(10));
            System.out.println(Integer.toOctalString(10));
    
            //static Integer valueOf(int i)
            //static Integer valueOf(String s)
    
            System.out.println(Integer.valueOf(1));
            System.out.println(Integer.valueOf("12"));
    
            int i = 100;
            String s = i+"";
            String s1 = String.valueOf(i);
    
            int x1 = Integer.parseInt("123");
    
            Integer xx = Integer.valueOf(100);
    
            int xxx = xx.intValue();
    
            Integer k = Integer.valueOf("123");
    
            String e = String.valueOf(k);
    
    
    
    
        }
    }
    
    

    相关文章

      网友评论

          本文标题:进阶:包装类

          本文链接:https://www.haomeiwen.com/subject/hrbawhtx.html