java自动装箱与拆箱

包装类

基本数据类型,使用起来非常方便,但是没有对应的方法来操作这些基本数据类型的数据

可以使用一个类,把基本类型的数据装起来,在类中定义一些方法,这个类叫做包装类,我们呢可以调用类当中的方法来操作这些基本类型的数据

包装类有8种,包装类位于 java.lang.文件下

基本类型 对应的包装类(位于java.lang包中)
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean

1.装箱与拆箱

1.1装箱:把基本类型的数据,包装到包装类中(基本类型的数据->包装类)

1.1.1构造方法:

  • Integer(int value) 构造一个新分配的Integer对象,他表示指定的int值。
  • Integer(String s) 构造一个新分配的Integer对象,他表示String参数所指示的int值。传递的字符串必须是基本类型的字符串,否则会出现抛出异常 例:“100”正确,“a"抛出异常

1.1.2静态方法:

  •   static Integer valueOf(int i)返回一个表示指定的int值得Integer实例
    
  •   static Integer valueOf(String s)返回保存指定的String的值得Integer对象
    

1.2 拆箱:在包装类中取出基本数据类型的数据(包装类->基本数据类型)

1.2.1成员方法:

  •   int intValue() 以int类型返回该 Integer的值
    
package package17BaoZhuanggLei.Demo01;

/*
* 装箱:把基本类型的数据,包装到包装类中(基本类型的数据->包装类)
*   构造方法:
*       Integer(int value) 构造一个新分配的Integer对象,他表示指定的int值。
*       Integer(String s) 构造一个新分配的Integer对象,他表示String参数所指示的int值。
*           传递的字符串必须是基本类型的字符串,否则会出现抛出异常     例:“100”正确,“a"抛出异常
*
*   静态方法:
*       static Integer valueOf(int i)返回一个表示指定的int值得Integer实例
*       static Integer valueOf(String s)返回保存指定的String的值得Integer对象
* 拆箱:在包装类中取出基本数据类型的数据(包装类->基本数据类型)
*   成员方法:
*       int intValue() 以int类型返回该 Integer的值
* */
public class Demo01Integer {
    public static void main(String[] args) {
        //装箱:把基本类型的数据,包装到包装类中(基本类型的数据->包装类)
        //构造方法
        Integer in1 = new Integer(1);
        System.out.println(in1);//重写了toString()方法

        Integer in2 = new Integer("2");
        System.out.println(in2);

        //静态方法:
        Integer in3 = Integer.valueOf(1);
        System.out.println(in3);

//        Integer in4 = Integer.valueOf("a");//NumberFormatException数字格式化错误
        Integer in4 = Integer.valueOf("2");
        System.out.println(in4);


        //拆箱:在包装类中取出基本数据类型的数据(包装类->基本数据类型)
        int i = in1.intValue();
        System.out.println(i);
    }
}

2.自动拆箱与装箱

自动拆箱自动装箱:基本类型的数据和包装类之间可以互相转换,jdk1.5之后出现的新特性

package package17BaoZhuanggLei.Demo01;

import java.util.ArrayList;


/*
* 自动拆箱与自动装箱:基本类型的数据和包装类之间可以互相转换
* jdk1.5之后出现的新特性
* */
public class Demo02Integer {
    public static void main(String[] args) {
        /*
        * 自动装箱:直接把int类型的整数赋值给包装类
        * Integer in = 1; 就相当于Integer in = new Integer(1);
        * */
        Integer in = 1;

        /*
        * 自动拆箱:in 是包装类,无法直接参与运算,可以自动转换为基本数据雷兴国,在进行计算
        * in+2;相当于in.intValue()+2
        * in = in.inValue()+2 = 3;又是一个自动装箱
        * */
        in = in+2;

        ArrayList<Integer> list = new ArrayList<>();

        /*
        * ArrayList集合无法直接存储整数,可以存储Integer包装类
        * */
        list.add(1);//-->隐含了一个自动装箱,list.add(new Integer(1));
        Integer a = list.get(0);//-->隐含了一个自动拆箱,list.get(o).intValue();
    }
}

3.基本类型与字符串之间的相互转换

3.1基本类型–>字符串(String)

基本类型的值+"",最简单的方法(工作常用)

包装类的静态方法toString(参数)不是Osbject类的toString() 重载关系

  • static String toString(int i) 返回一个表示指定整数的String对象

String类的静态方法valueOf(参数)

  • static String valueOf(int i) 返回int(与参数的类型有关)参数的字符串表示形式

3.2字符串(String)–>基本类型

使用包装类的静态方法parseXXX(“字符串”)

  •   Integer类: static int parseInt(String s)
    
  •   Double类: static double parseDouble(String s)
    
package package17BaoZhuanggLei.Demo01;


/*
* 基本类型与字符串类型的相互转换
* 基本类型-->字符串(String)
*   1.基本类型的值+"",最简单的方法(工作常用)
*   2.包装类的静态方法toString(参数)不是Object类的toString()      重载关系
*       static String toString(int i) 返回一个表示指定整数的String对象
*   3.String类的静态方法valueOf(参数)
*       static String valueOf(int i) 返回int(与参数的类型有关)参数的字符串表示形式
* 字符串(String)-->基本类型
*   使用包装类的静态方法parseXXX("字符串")
*       Integer类: static int parseInt(String s)
*       Double类: static double parseDouble(String s)
* */
public class Demo03Integer {
    public static void main(String[] args) {
        //基本类型-->字符串(String)
        int i1 = 100;
        String s1 = i1 + "";
        System.out.println(s1 + 200);//100200:字符串拼接

        String s2 = Integer.toString(100);
        System.out.println(s2+200);

        String s3 = String.valueOf(100);
        System.out.println(s3);

        //字符串(String)-->基本类型
        int i = Integer.parseInt(s1);
        System.out.println(i-10);

        /*int a = Integer.parseInt("a");//NumberFormatException数据格式转换错误
        System.out.println(a);*/
    }
}

你可能感兴趣的:(java基础,包装类,java,面向对象编程,编程语言)