Java包装类之自动装箱与拆箱

时间:2021-08-08 18:07:54

JDK 5.0之前

基本数据类型<---->包装类:调用包装类的构造器(代码里有知识点和注意点)

转换目的:有了类的特点,就可以调用类中的方法

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public class WrapperTest {
    // 基本数据类型--->包装类:调用包装类的构造器
    @Test
    public void test1() {
        int num1 = 10;
        Integer in1 = new Integer(num1);
        System.out.println(in1.toString());//10
        Integer in2 = new Integer("123");
        System.out.println(in2.toString());//123
        // 报异常:NumberFormatException
        Integer in3 = new Integer("123abc");//调用Integer必须全是数字
        System.out.println(in3.toString());
        //有点特殊:因为底层源码 return ((s != null) && s.equalsIgnoreCase("true"));
        Boolean b1 = new Boolean(true);
        Boolean b2 = new Boolean("True");//true
        System.out.println(b2);
        Boolean b3 = new Boolean("true123");//flase
        Order order = new Order();
        System.out.println(order.isMale);//false//因为基本数据类型的默认初始化值为:false
        System.out.println(order.isFamale);//null//此时为引用数据类型(类),默认初始化值:null
    }
}
class Order {
    boolean isMale;
    Boolean isFamale;
}

Java包装类之自动装箱与拆箱

包装类--->基本数据类型:调用包装类的xxxValue()
转换目的:就可以进行加减乘除的运算

?
1
2
3
4
5
6
7
8
9
10
11
public class WrapperTest {
    @Test
    public void test2() {
        Integer in1 = new Integer(12);
        int i1 = in1.intValue();
        System.out.println(i1 + 1);//13
        Float f1 = new Float(12.3);
        float f2 = f1.floatValue();
        System.out.println(f2 + 1);//13.3
    }
}

JDK5.0之后

自动装箱:本质是替换之前的调用包装类的构造器

自动拆箱:本质是替换之前的调用包装类的xxxValue()

?
1
2
3
4
5
6
7
8
9
10
11
12
13
public class WrapperTest {
    @Test
    public void test3() {
        //自动装箱
        int num2 = 10;
        Integer in1 = num2;
        boolean b1 = true;
        Boolean b2 = b1;
        //自动拆箱
        System.out.println(in1.toString());
        int num3 = in1;
    }
}

基本数据类型、包装类---->String类型:调用String重载的valueOf(Xxx xxx)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class WrapperTest {
    @Test
    public void test4() {
        //方式一:连接运算
        int num1 = 10;
        String str1 = num1 + "";
        //方式二:调用String的valueOf(Xxx xxx)
        float f1 = 12.3f;
        String str2 = String.valueOf(f1);
        Double d1 = new Double(12.4);
        String str3 = String.valueOf(d1);
        System.out.println(str2);//"12.3"
        System.out.println(str3);//"12.4"  
    }
}

注意点:“+”运算符是最简单、最快捷,也是使用最多的字符串连接方式。在使用"+"运算符连接字符串和int型(或double型)数据时,“+”将int(或double)型数据自动转成String类型。

String--->基本数据类型、包装类:调用包装类的parseXxx(String s)

?
1
2
3
4
5
6
7
8
9
10
public class WrapperTest {
    @Test
    public void test5() {
        String str1 = "123";
        int num2 = Integer.parseInt(str1);//若为"123a",则会报NumberFormatException
        System.out.println(num2 + 1);
        String str2 = "true";
        boolean b1 = Boolean.parseBoolean(str2);//非true,即flase
        System.out.println(b1);
    }

注意:转换时,可能会报NumberFormatException

到此这篇关于Java包装类之自动装箱与拆箱的文章就介绍到这了,更多相关Java 装箱 拆箱内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/weixin_49329785/article/details/119084226