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的各子类实现。

     

  • 相关阅读:
    组装query,query汇总,query字段
    POJ 1276, Cash Machine
    POJ 1129, Channel Allocation
    POJ 2531, Network Saboteur
    POJ 1837, Balance
    POJ 3278, Catch That Cow
    POJ 2676, Sudoku
    POJ 3126, Prime Path
    POJ 3414, Pots
    POJ 1426, Find The Multiple
  • 原文地址:https://www.cnblogs.com/pangchunlei/p/12466990.html
Copyright © 2011-2022 走看看