美文网首页
Java 基础 31 包装类

Java 基础 31 包装类

作者: 小熊先生很不开心 | 来源:发表于2018-02-02 20:27 被阅读7次

    1.1 基本类型包装类的概述

      需求:我要判断一个数据是否在int范围内?
    要想判断一个数据是否在int范围内,首先我们得知道int范围,在前面我们讲解基本数据类型的时候说过了:

    • -2147483648 到 2147483647

    为了对基本数据类型进行更多更方便的操作,Java就针对每一种基本数据类型提供了一个对应的引用类型。

    基本类型包装类:

    引用类型 基本数据类型
    Byte byte
    Short short
    Integer int
    Long long
    Float float
    Double double
    Character char
    Boolean boolea

      基本数据类型包装类最常见的用法就是用于和字符串之间进行相互转换。

    1.2 Integer类的概述和构造方法

    Integer:

    • Integer类在对象中包装了一个基本类型 int 的值。

    构造方法:

    • Integer(int value)
    • Integer(String s)

    注意:这个字符串必须由数字字符组成

    1.2.1 案例代码

    package com.itheima_02;
    /*
     * Integer:Integer类在对象中包装了一个基本类型 int 的值。
     * 
     * 构造方法:
     *      Integer(int value) 
     *      Integer(String s) 
     *          注意:这个字符串必须由数字字符组成
     */
    public class IntegerDemo {
        public static void main(String[] args) {
            //Integer(int value) 
            int value = 100;
            Integer i = new Integer(value);
            System.out.println(i); //100
            System.out.println("------------");
            
            //Integer(String s) 
            String s = "100";
            //NumberFormatException:数据格式化异常
            //String s = "abc";
            Integer ii = new Integer(s);
            System.out.println(ii);
        }
    }
    
    

    1.3 int类型和String类型的相互转换

      int类型和String类型的相互转换

    • int -- String

      • String类中:public static String valueOf(int i)
    • String -- int

      • Integer类中:public static int parseInt(String s)

    1.3.1 案例代码

    package com.itheima_03;
    /*
     * int类型和String类型的相互转换
     * 
     * int  --  String
     *      String类中:public static String valueOf(int i)
     * 
     * String   --  int
     *      Integer类中:public static int parseInt(String s)
     */
    public class IntegerDemo {
        public static void main(String[] args) {
            //int   --  String
            int number = 100;
            //方式1
            String s1 = "" + number;
            System.out.println(s1);
            //方式2
            //public static String valueOf(int i)
            String s2 = String.valueOf(number);
            System.out.println(s2);
            System.out.println("--------------");
            
            //String  -- int
            String s = "100";
            //方式1
            //String -- Integer -- int
            Integer i = new Integer(s);
            //public int intValue()
            int x = i.intValue();
            System.out.println(x);
            //方式2
            //public static int parseInt(String s)
            int y = Integer.parseInt(s);
            System.out.println(y);
            
        }
    }
    

    1.4 Integer 的练习之把字符串中的数据排序

    需求:

      我有如下一个字符串:”91 27 46 38 50”

      请写代码实现最终输出结果是:”27 38 46 50 91”

      提示:这里需要参考String类中的方法

      public String[] split(String regex)

    1.4.1 案例代码

    package com.itheima_04;
    
    import java.util.Arrays;
    
    /*
     * 我有如下一个字符串:”91 27 46 38 50”
     * 请写代码实现最终输出结果是:”27 38 46 50 91”
     * 提示:这里需要参考String类中的方法
     * public String[] split(String regex)
     * 
     * 分析:
     *      A:定义一个字符串对象
     *      B:把字符串中的数字数据存储到一个int类型的数组中
     *      C:对int数组进行排序
     *      D:把排序后的数组中的元素进行拼接得到一个字符串
     *      E:输出字符串
     */
    public class IntegerDemo {
        public static void main(String[] args) {
            //定义一个字符串对象
            String s = "91 27 46 38 50";
            
            //把字符串中的数字数据存储到一个int类型的数组中
            //public String[] split(String regex)
            String[] strArray = s.split(" ");
            /*
            for(int x=0; x<strArray.length; x++) {
                System.out.println(strArray[x]);
            }
            */
            
            //定义一个int类型的数组
            int[] arr = new int[strArray.length];
            for(int x=0; x<arr.length; x++) {
                arr[x] = Integer.parseInt(strArray[x]);
            }
            
            //对int数组进行排序
            Arrays.sort(arr);
            
            //把排序后的数组中的元素进行拼接得到一个字符串
            StringBuilder sb = new StringBuilder();
            for(int x=0; x<arr.length; x++) {
                if(x==arr.length-1) {
                    sb.append(arr[x]);
                }else {
                    sb.append(arr[x]).append(" ");
                }
            }
            String result = sb.toString();
            
            //输出字符串
            System.out.println("result:"+result);
        }
    
    

    1.5 JDK5的新特性自动装箱和拆箱

    JDK5新特性:

    • 自动装箱:

      • 把基本数据类型转换为对应的包装类类型
        public static Integer valueOf(int i)
    • 自动拆箱

      • 把包装类类型转换为对应的基本数据类型
        public int intValue()
    • Java程序的运行:
      编写java文件 -- 编译生成class文件 -- 执行

    • 注意:

      • 在使用包装类类型的新特性的时候,如果做操作,最好先判断是否为null。
        开发中的原则:
    • 注意:只要是对象,在使用前就必须进行不为null的判断。

    1.5.1 案例代码

    package com.itheima_05;
    /*
     * JDK5新特性:
     * 自动装箱:把基本数据类型转换为对应的包装类类型
     *      public static Integer valueOf(int i)
     * 自动拆箱:把包装类类型转换为对应的基本数据类型
     *      public int intValue()
     * 
     * Java程序的运行:
     *      编写java文件 -- 编译生成class文件 -- 执行
     * 
     * 注意:在使用包装类类型的新特性的时候,如果做操作,最好先判断是否为null。
     * 
     * 开发中的原则:
     *      只要是对象,在使用前就必须进行不为null的判断。
     */
    public class IntegerDemo {
        public static void main(String[] args) {
            //创建一个包装类类型的对象
            //Integer i = new Integer(100);
            Integer ii = 100; //自动装箱    
            //public static Integer valueOf(int i)
            ii += 200; //ii = ii + 200; 自动拆箱,自动装箱
            //public int intValue()
            System.out.println(ii);
            
            /*
            Integer ii = Integer.valueOf(100);
            ii = Integer.valueOf(ii.intValue() + 200);
            System.out.println(ii);
            */
            
            Integer iii = null;
            if(iii != null) {
                iii += 300; //NullPointerException
                System.out.println(iii);
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:Java 基础 31 包装类

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