zoukankan      html  css  js  c++  java
  • 二十八、Java基础之包装类


    一、包装类:
    基本类型-包装类
    byte-Byte
    short-Short
    int-Integer
    long-Long
    float-Float
    double-Double
    char-Character
    boolean-Boolean



    二、包装类对象的创建
    character包装类构造方法只有一个,根据基本类型创建包装类对象
    其他的包装类构造方法都有两个,根据基本类型创建包装类对象,根据字符串创建包装类对象
    public class Test01 {
    
        public static void main(String[] args){
    
            //1。根据包装类基本类型创建包装类对象
            Boolean bb= new Boolean(true);
            Character cc = new Character('A');
            Integer ii = new Integer(123);
            Double dd = new Double(3.14);
    
    
            //2.根据字符串创建包装类对象,Character没有这个构造方法
            Integer i = new Integer("456");
            Double d = new Double("5.68");
            //注意:根据字符串创建包装类对象时,字符串要符合对应的格式
            //i= new Integer("aaa");//java.lang.NumberFormatException: For input string: "aaa"
            d = new Double("2e3");//2乘以10的3次方,科学计数法
            System.out.println( d );
            //Boolean会把true字符串转化为true,其他的字符串全部转化为false
            Boolean b = new Boolean("true");
            System.out.println( b );
            Boolean bbb = new Boolean("hello");
            System.out.println( bbb );
    
    
    
        }
    
    }

    三、包装类的常量
    public class Test02 {
    
        public static void main(String[] args){
    
            System.out.println(Integer.BYTES);//4
            System.out.println(Integer.SIZE);//32
            System.out.println(Integer.MAX_VALUE);//2147483647
            System.out.println(Integer.MIN_VALUE);//-2147483648
            System.out.println(Integer.TYPE);//int
    
            System.out.println(Double.POSITIVE_INFINITY);//Infinity
            System.out.println(Double.NEGATIVE_INFINITY);//-Infinity
            System.out.println(Double.NaN);//NaN
    
            //System.out.println(10/0);        //java.lang.ArithmeticException: / by zero
            System.out.println(10/0.0);      //Infinity
            System.out.println(-10/0.0);     //-Infinity
            System.out.println(0/0.0);       //NaN   not a number
    
            System.out.println(Character.MAX_VALUE);
            System.out.println(Character.MIN_VALUE);
            System.out.println((int)Character.MIN_VALUE);//0
            System.out.println((int)Character.MAX_VALUE);//65535
        }
    }

    四、包装类常用的方法

    public class Test03 {
    
        public static void main(String[] args){
    
            Integer i = new Integer(147);
    
            //每个包装类都有一个value字段,保存的是这个包装类对应的基本类型数据
            //1。从Number继承的方法,可以把包装类对象转换为基本数据类型,实际上是把value字段强制类型转换
            double d = i.doubleValue();
            byte b = i.byteValue();
            System.out.println( i );//147
            System.out.println( d );//147
            System.out.println( b );//-109
    
    
            //2、包装类都实现了Comparable接口,重写了comparaTo()的方法,可以比较两个包装类的大小,根据value字段
    
            Integer i2 = new Integer("258");
            System.out.println(i.compareTo(i2));        //-1 表示i小于i2
             Boolean b1 = new Boolean(true);
             Boolean b2 = new Boolean(false);
            System.out.println(b1.compareTo(b2));      //1  表示不相等
    
            //3、重写了equals方法
            System.out.println(i.equals(i2));//false
            System.out.println(b1.equals(b2));//false
    
            //小数采用近似值保存,有时不准确,如0·1在计算机中是无法准确的表示
            System.out.println(Double.doubleToLongBits(1.1));//4607632778762754458
            System.out.println(Double.doubleToLongBits(0.9));//4606281698874543309
    
            System.out.println(2-1.1);//0.8999999999999999
            System.out.println(Double.doubleToLongBits(2-1.1));//4606281698874543308
            System.out.println(Double.doubleToLongBits(2-1.1)==Double.doubleToLongBits(0.9));//false
    
            //4、Integer.parseInt(String)可以把字符串转换为int类型数据
            String text = "456";
            int num = Integer.parseInt(text);
            System.out.println( num );
    
            //Double.parseDouble(String)可以把字符串转化为double数据
            double pi = Double.parseDouble("3.14");
            //Boolean.parseBoolean(String)可以把字符串转化为boolean数据
            boolean flag = Boolean.parseBoolean("true");
    
            //在把字符串转化为基本数据类型数据时,字符串要符合目标类型的规则
            //num = Integer.parseInt("3.14");//java.lang.NumberFormatException: For input string: "3.14"
    
            //5、把十进制数转化为二进制,八进制,十六进制
            System.out.println(Integer.toBinaryString(100));//1100100
            System.out.println(Integer.toOctalString(100));//144
            System.out.println(Integer.toHexString(100));//64
    
            //6、toString(int)可以把基本类型转化为字符串
            text = Integer.toString(100);//100
            System.out.println(text);
            text = Double.toString(3.14);//3.14
            System.out.println(text);
            text = Boolean.toString(true);//true
            System.out.println(text);
    
            //valueOf()把基本类型/字符串转换为包装类对象
            i =Integer.valueOf(258);//258
            System.out.println(i);
            i = Integer.valueOf("147");//147
            System.out.println(i);
            Double double1 = Double.valueOf(3.14);//3.14
            System.out.println(double1);
            double1 = Double.valueOf("3.56");//3.56
            System.out.println(double1);
            Boolean boolean1 = Boolean.valueOf(false);//false
            System.out.println(boolean1);
            boolean1 = Boolean.valueOf("ddffd");//false
            System.out.println(boolean1);
    
        }
    }

     五、装箱与拆箱

    public class Test04 {
        public static void main(String[] args){
    
            Integer i1=789;//自动装箱,系统化根据基本数据类型数据789自定创建一个包装类对象,把该对象引用保存到i1中
            Integer i2=789;//自动装箱,系统化根据基本数据类型数据789自定创建一个包装类对象,把该对象引用保存到i2中
    
            int num = i1;//自动拆箱,系统把i1对象的value字段值赋给num
    
            //包装类对象判等
            System.out.println(i1.equals(i2));//true
            System.out.println(i1==i2);//false
    
            Integer i3=88;
            Integer i4=88;
            System.out.println(i3==i4);//true
            /**
             * java认为-128~127之间的整数是使用最频繁的,这个范围内的整数装箱后采用享元模式
             * -128~127之间的整数生成的包装类对象储存在方法区的常量池中
             * 在执行i3=88时,会在常量池中创建一个包装类对象,
             * 在执行i4=88时,直接把常量池中的保重类对象的引用赋值给i4,即现在的i3和i4引用了常量池中同一个包装类对象
             */
    
            Long long1 = 123L;
            Long long2 = 123L;
            System.out.println(long1==long2);//true
    
    
    
    
        }
    }
  • 相关阅读:
    huffman编码压缩算法(转)
    ReLU 和sigmoid 函数对比以及droupout
    分类中数据不平衡问题的解决经验(转)
    C++ 虚函数表解析
    const 和宏的区别
    static小结
    javascript技巧字典【转藏】
    七个心理寓言【转】
    购物车悬浮 + 购物数量显示
    好看的图标
  • 原文地址:https://www.cnblogs.com/chushujin/p/11072947.html
Copyright © 2011-2022 走看看