zoukankan      html  css  js  c++  java
  • java基础-包装类

     
        java中的类把方法和数据链接在一起,构成了包含式的处理单元。java中不能定义基本数据类型对象,为了能将基本类型视为对象处理,并能连接相关的方法,java为每个基本类型提供了包装类,如int型数值的包装类Integer和boolean型数值的包装类Boolean。java是可以直接处理基本数据类型的,但是有些情况需要将其最为对象来处理,这就需要将其转换为包装类。

     

    import java.util.HashMap;
    import java.util.Map;
    
    public class WrapperClassesForNumberPrimaryTypesAppMain {
        public static void main(String[] args) {
            // >> TODO 从 Java 第一个版本开始,Java 就为每种基本数据类型提供了封装的类,以便可以将其当作类而非基本数据类型使用
            // >> TODO 比如 List,Map这些类,都是操作的Object,无法操作基本数据类型
            // >> TODO 和数字相关的基本数据类型对应的类依次为:Byte,Short,Integer,Long,Float, Double
            int a = 99;
            // TODO 可以使用数字创建一个Integer类,下面的方法在别的数字类中也都类似。
            Integer i1 = new Integer(a);
            Integer i2 = new Integer("789");
            int b = Integer.valueOf(a);
            int c = Integer.parseInt("998");
    
            System.out.println("-------------自动封箱拆箱----------------");
            // >> TODO Java 提供了自动为每种基本数据类型和其封装类之间的转换功能
            // >> TODO 从基本数据类型到封装类,我们叫做自动封箱,英文叫做auto boxing,反之叫做自动拆箱,叫做auto unboxing
            Integer ab = 987;
            int cd = ab;
    
            // TODO 自动封箱为Integer,作为Map中的key
            Map<Integer, String> int2Str = new HashMap<>();
            int2Str.put(1, "壹");
            int2Str.put(2, "贰");
            int2Str.put(3, "叁");
            System.out.println(int2Str.get(1));
    
            // TODO 自动拆箱为int,并给key赋值
            for (int key : int2Str.keySet()) {
                System.out.println(key);
            }
    
            System.out.println("-------------有用的方法----------------");
    
            System.out.println(Integer.toBinaryString(-1024));
            System.out.println(Integer.toOctalString(-1024));
            System.out.println(Integer.toHexString(-1024));
    
            System.out.println("-------------Number类----------------");
    
            // TODO 所有和数字相关的封装类,都继承自Number类
            Number num = 9;
            num = new Integer(12345);
            Number numD = 9.99;
            numD = new Double(12.30294);
    
            // TODO 使用Number类可以方便的进行数字类型的转换
            // TODO 当然所有的类都继承了Number的这些转换方法
            System.out.println("使用number将double转为long:" + numD.longValue());
    
    
            System.out.println("-------------自动拆箱可能的NPE----------------");
    
            int2Str.put(null, "无");
            System.out.println(int2Str.get(null));
    
            // TODO 自动拆箱为int,并给key赋值,但是有一个key为null,null是无法转成一个 int 的,注意,null 不是0,
            // TODO 其实自动拆箱,后面是Java帮我们调用了对应的方法,在这里就是intValue()这个方法
            // TODO 所以当引用为null时候自动拆箱,相当于是调用null的方法,所以这时候就会发生NPE
            // TODO 对于其它封装类型的自动拆装箱,也是一样的,
            for (int key : int2Str.keySet()) {
                System.out.println(key);
            }
    
        }
    }

    1、Integer

        java.lang中包含Integer类、Long类、Short类,分别是基本类型int、long、short封装成一个类,都是Number的子类。Integer类在对象中包装了一个基本类型int值,该类的对象包含一个int类型字段,此外还提供了多个方法,能在int类型和String类型之间转换,同时还提供了其他一些处理int类型时有用的常量和方法。

        (1)构造方法

        Integer(int Number)

        以int型变量作为参数,获取Integer对象。

    Integer number = new Integer(7);

        Integer(String Number)

        以String型变量为参数获取Integer对象。

    Integer number = new Integer('7');

        注意:要用数值型String作为参数,例如123,否则会抛出NumberFormatException异常。

        (2)常用方法

     parseInt()方法返回与调用该方法的数值字符串相应的整型(int)值。

        代码示例:

    public class Summation {
        public static void main(String[] args) {
            String str[] = {"85","12","10","15","22","45"};
            int sum = 0 ;
            for(int i = 0 ; i < str.length ; i++){
                int myint = Integer.parseInt(str[i]);
                sum += myint;
            }
            System.out.println("数组中各元素相加和是:"+sum);
        }
    }

     

    Integer类的toString()方法,可将Integer对象转为十进制字符串表示,toBinaryString()、toHexString()、toOctalString()方法分别将值转换为二进制、十六进制、八进制字符串。

     

    代码示例:

    public class Charc {
        public static void main(String[] args) {
            String str = Integer.toString(456); //获取数字的十进制表示
            String str2 = Integer.toBinaryString(456);//获取数字的二进制表示
            String str3 = Integer.toHexString(456); // 获取数字的十六进制表示
            String str4 = Integer.toOctalString(456);//获取数字的八进制表示
            System.out.println("数字“456”的十进制表示:" + str);
            System.out.println("数字“456”的2进制表示:" + str2);
            System.out.println("数字“456”的16进制表示:" + str3);
            System.out.println("数字“456”的8进制表示:" + str4);
        }
    }

      (3)常量

        Integer类提供了4个常量:

        MAX_VALUE:表示int类型可去的最大值,即 2^31-1

        MIN_VALUE:表示int类型可去的最小值,即 -2^31

        SIZE:用来以二进制补码形式表示int的位数

        TYPE:表示基本类型int的Class实例

     

        代码示例:

    public class GetCon {
        public static void main(String[] args) {
            int maxint = Integer.MAX_VALUE;
            int minint = Integer.MIN_VALUE;
            int intsize = Integer.SIZE;
    
            System.out.println("int类型可取得最大值是:"+maxint);
            System.out.println("int类型可取得最小值是:"+minint);
            System.out.println("int类型二进制位数是:"+intsize);
        }
    }

    2、Boolean

        Boolean是将boolean类型的值包装在一个对象中,一个Boolean类型的对象只包含一个类型为boolean的字段。还为boolean和String相互转换提供了方法。

    (1)构造方法

        Boolean(boolean value) === 创建一个表示value参数的Boolean对象

        Boolean b = new Boolean(true);

     

        Boolean(String str) ==== 以String变量作为参数创建Boolean对象。如果String参数不为null且忽略大小写时,等于true,则分配一个表示为true值得Boolean对象,否则活得一个false值得Boolean对象。

        Boolean bool = new Boolean("ok");

     

    (2)常用方法

        代码示例:

    public class GetBoolean {
        public static void main(String[] args) {
            Boolean b1 = new Boolean(true);
            Boolean b2 = new Boolean("ok");
            System.out.println("b1:"+b1.booleanValue());
            System.out.println("b2:"+b2.booleanValue());
        }
    }
    public class WrapperClassForBooleanAppMain {
        public static void main(String[] args) {
            // TODO boolean对应的类为Boolean,布尔值因为只有两个值,所以Boolean类直接提供了这两个值的静态变量
            System.out.println("-------------静态变量----------------");
    
            System.out.println(Boolean.TRUE);
            System.out.println(Boolean.FALSE);
    
            System.out.println("-------------valueOf----------------");
            // TODO 只有不分大小写的true才是true,剩下的字符串都是false
            System.out.println(Boolean.valueOf("true"));
            System.out.println(Boolean.valueOf("false"));
            System.out.println(Boolean.valueOf("asdf"));
            System.out.println(Boolean.valueOf(" true "));
    
        }
    }

    (3)常量

        TRUE:对应基值为true的Boolean对象

        FALSE:对应基值为false的Boolean对象

        TYPE:基本类型boolean的Class对象

    3、Byte

       Byte是将基本类型为byte的值包装在一个对象中。一个Byte类型的对象只能包含一个类型为byte的字段。还为byte、String相互转换提供了方法。

        (1)构造方法

        Byte(byte value) === 可表示指定的byte值

    byte mybyte = 45;
    Byte b = new Byte(mybyte);

     Byte(String str) === 可表示String参数所指示的byte值。

    Byte mybyte2 = new Byte("12");

        注意:要用数值型String变量作为参数,如123,否则会抛出NumberFormatException异常。

     

        (2)常用方法

        (3)常量

        MIN_VALUE:byte类型可取得最小值

        MAX_VALUE:byte类型可取的最大值

        SIZE:用于以二进制补码形式表示byte值得位数

        TYPE:表示基本类型byte的Class实例

     

    代码示例:

    public class ByteCom {
        public static void main(String[] args) {
            Byte b1 = Byte.MAX_VALUE;
            Byte b2 = Byte.MIN_VALUE;
            Byte b3 = Byte.SIZE;
    
            System.out.println(b1);
            System.out.println(b2);
            System.out.println(b3);
        }
    }

    4、Chatacter

       (1)构造方法

        Character(char value) === 必须是一个char类型的数据,通过该构造方法创建的Character类对象包含由char类型参数提供的值,一旦Character类被创建,它包含的数值就不能改变了。

        Character mychar  = new Character('s');

     

        (2)常用方法

    public class WrapperClassForCharAppMain {
        public static void main(String[] args) {
            // TODO char对应的类为Character,里面有很多isXXX方法比较实用,比如判断字符是否为数字
            System.out.println(Character.isDigit('A'));
            System.out.println(Character.isDigit('字'));
            System.out.println(Character.isDigit('0'));
            System.out.println(Character.isDigit('9'));
        }
    }

     

        (3)常量

        CONNETOR_PUNCTUATION:返回byte型值,表示Unicode规范中的常规类别“Pc”

        UNASSIGNED:返回byte型值,表示Unicode规范中的常规类别“Cn”

        TITLECASE_LETTER:返回byte型值,表示Unicode规范中的常规类别“Lt”

    5、Double

      Double和Float包装类是对double、float基本类型的封装,都是Number的子类,又都是对小数进行操作,所以常用方法基本相同。Double类在对象中包装了一个基本类型为Double的值,每个Double类的对象都包含一个double类型的字段,此外该类还提供多个方法,将double转换为String,也可以将String转为double。

        (1)构造方法

        Double(double value):基于double参数创建Double类对象

        Double(String value):构造一个新分配的Double对象,表示用字符串表示的double类型浮点值

        

        注意:如果不是以数值类型的字符串作为参数,则抛出NumberFormatException异常

     

        (2)常用方法

     

        (3)常量

        MAX_EXPONENT:返回int值,表示有限double变量可能具有的最大指数

        MIN_EXPONENT:返回int值,表示标准化double变量可能具有的最小指数

        NEGATIVE_INFINITY:返回double值,表示保存double类型的负无穷大值得常量

        POSITIVE_INFINITY:返回double值,表示保存double类型的正无穷大值得常量

    6、Number

        抽象类Number是BigDecimal、BigInteger、Byte、Double、Float、Integer、Long、Short类的父类,Number的子类必须通过方法,用来将表示的数值byte,double,float,int,long,short的方法。Number类的方法分别被Number的各子类实现。

     

  • 相关阅读:
    Spring3:AOP
    Spring2:bean的使用
    Spring1:Spring简介、环境搭建、源码下载及导入MyEclipse
    Vue.js——60分钟组件快速入门(上篇)
    vue父子组件嵌套的时候遇到
    Vue.js——60分钟快速入门
    [Vue warn]: Cannot find element: #app
    关于RabbitMQ以及RabbitMQ和Spring的整合
    spring集成多个rabbitMQ
    RabbitMQ-从基础到实战(5)— 消息的交换(下)
  • 原文地址:https://www.cnblogs.com/pangchunlei/p/12466990.html
Copyright © 2011-2022 走看看