[Java进阶] 八种基本数据类型的包装类 (装箱和拆箱)

目录

创建

构造方法

静态方法

什么是装箱和拆箱

自动装箱和自动拆箱

数值与字符串数值之间的转换

数值转字符串

字符串转数值

缓存区问题

应用


写在前面: 基本数据类型是不具备对象的特点, 不能调用对象方法, 为了让java更加面向对象, 增加了八种基本数据类型的包装类, 以下以Integer为例.

创建

构造方法

使用构造方法创建Integer对象

Integer i = new Integer(int x);

静态方法

Integer i2 = Integer.valueOf(int x);

什么是装箱和拆箱

装箱: 包装类就是将基本数据类型包装起来, 就是装箱, 创建Integer对象就是装箱的过程

拆箱: 将包装类转换成基本数据类型

int i3 = i2.intValue();

自动装箱和自动拆箱

这个机制让我们更方便灵活运用int和Integer,既可以让包装类对象按照基本数据类型的操作方式进行操作,也可以让包装类对象依然具备对象的特性. (一举两得)

什么时候自动装箱: 当基本数据类型要做一下引用数据类型才能完成的操作的时候, 系统自动将基本数据类型封装包装类型

Integer i4 = 200;
//相当于====
Integer i4 = Integer.valueOf(200);

什么时候自动拆箱: 当引用数据类型要做基本数据类型才能完成的操作时,系统自动将包装类拆箱转换为基本数据类型

Integer i5 = new integer(10);
//相当于====
int i5 = Integer.intValue(10);

System.out.println(i5+15);

数值与字符串数值之间的转换

数值转字符串

Integer a = 15;
//1.使用字符串拼接
String s1 = a+"";
//2.主动调用重写的toString方法
String s2 = a.toString();
//3.被动转换, 使用String.valueOf(), 将传进去的参数变成String
String s3 = String.valueOf(a);

字符串转数值

String s = "10.9";
//1.使用BigDecimal进行操作
BigDecimal bi = new BigDecimal(s);
//2.使用Integer的parseInt方法, 返回int对象
int i = Integer.ParseInt(s);
//3.使用包装类的静态方法valueOf, 将传入参数转为包装类对象
Integer i3 = Integer.valueOf(s)

缓存区问题

整数类型(byte/short/int/long)的包装类都有相应的缓存区: 从-128~127

当使用valueOf静态方法创建对象时, 会先检查缓存区中是否有对应的包装类对象, 如果有,直接引用地址 , 如果没有, 则创建新的包装类对象 .

应用

        //题目:观察代码,说出比较的结果.
        Integer i1 = new Integer(120);
        Integer i2 = new Integer(120);
        System.out.println(i1 == i2);

        Integer i3 = Integer.valueOf(120);
        Integer i4 = Integer.valueOf(120);
        System.out.println(i3 == i4);

        Integer i5 = Integer.valueOf(200);
        Integer i6 = Integer.valueOf(200);
        System.out.println(i5 == i6);

        Integer i7 = 100;
        Integer i8 = 100;
        //自动装箱走的是valueOf方法
        System.out.println(i7 == i8);

1. 使用构造方法创建对象 , 在堆中创建, 不同对象的地址不同

2. 使用valueOf静态方法创建对象, 会先检查对象值是不是在缓存区中(-128~127),如果是,直接引用这个地址

3. 使用valueOf静态方法创建对象, 如果对象值不在缓冲区, 则调用构造方法创建新的对象

4. 使用自动装箱的机制 , 实际上调用的是valueOf静态方法.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值