张小飞的Java之路——第二十九章——基本类型包装类

本文介绍了Java中的基本类型包装类,包括自动装箱和拆箱的概念及应用。文章通过对话形式阐述了Integer等包装类的作用,并讨论了基本类型与字符串之间的转换方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写在前面:

视频是什么东西,有看文档精彩吗?

视频是什么东西,有看文档速度快吗?

视频是什么东西,有看文档效率高吗?


1. 介绍

张小飞:什么是基本类型包装类?

诸小亮:Java有 8 种基本数据类型,你是知道的吧

张小飞:这时当然的,它们是:int、short、byte、char、long、double、float、boolean

诸小亮:嗯嗯不错,不过 Java 是面向对象的语言,所以每种基本数据类型,都有对应的类

基本数据类型包装类
byteByte
shortShort
intInteger
charCharacter
longLong
doubleDouble
floatFloat
booleanBoolean

张小飞:原来是这样,不过这有什么用呢?

诸小亮:这样做的目的——定义更多的功能操作基本数据类型,以 Integer 为例:

public static void main(String[] args) throws Exception {
    //创建Integer对象
    Integer num = new Integer(12);//已经过时
    num = Integer.valueOf(10);//目前推荐使用
    System.out.println(num);
    System.out.println(Integer.MAX_VALUE);//int的最大值
    System.out.println(Integer.toBinaryString(num));//把数字转换为二进制字符串
}

张小飞:明白了

2. 自动装箱和拆箱

张小飞:那么工作中,是用包装类还是用基本类型呢?

诸小亮:用哪个都可以,因为它们会自动转换,比如:

public static void main(String[] args) throws Exception {
    //1. 会把 100 自动转换称 Integer 对象,这叫自动装箱
    Integer num = 100;

    //2. 把 Integer 自动转换为 int 类型,这叫自动拆箱
    int count = num;
}

张小飞:自动装箱?

诸小亮:是的,这时基本类型和包装类的一个重要特性

  • 第一行,将整数值100赋给Integer类型的对象num,这是:自动装箱
  • 第二行,先将Integer对象num转换为基本数据类型,然后将结果赋值给count,这是:自动拆箱

张小飞:明白了

诸小亮:另外,你猜猜下面代码输出结果是什么

public static void main(String[] args) throws Exception {
    Integer num2 = new Integer(100);//虽然已过时,但是先用,主要看现象
    Integer num3 = new Integer(100);
    System.out.println(num2 == num3);
    System.out.println(num2.equals(num3));
}

张小飞:第一个肯定是false,第二个是true,这还用猜?

诸小亮:嗯,不错,如果把代码改一改呢?

image.png

张小飞:这应该跟改之前没什么区别吧

诸小亮:有区别,这时候两个都是true

张小飞:还真是,不过,这是为什么呢?

诸小亮:为了方便, Java内置了 -128 到 127 的 Integer 对象,所以 num2 和 num3 指向的是同一块内存

张小飞:原来如此,能证明吗?

诸小亮:当然可以,通过debug就能看出来

image.png

另外,通过观察内存也可以证明它们都是内置的 Integer 对象,比如:

111.gif

张小飞:明白了

3. 基本类型和字符串

诸小亮:其实,工作中常常会用到基本类型和字符串互相转换

张小飞:这应该怎么转换?

诸小亮:以 Integer 为例,它提供了 parseInt 方法,把字符串转换为数字,返回值是int类型

image.png

张小飞:如果提供的字符串不是数字呢?

诸小亮:那就会报异常,比如:

image.png

结果:

image.png

张小飞:明白

诸小亮:另外,基本类型也可以转换为字符串

 public static void main(String[] args) throws Exception {
    int num = 100;
    //1. 使用Integer的toString方法
    String numStr = Integer.toString(num);
    System.out.println(numStr);
     
    //2. 直接加上空字符串
    System.out.println(num+"");
}

张小飞:原来也可以使用 toString 方法

张小飞:如果想把一个都是数字的字符串转换为 Long、Double呢?

诸小亮:转换方式跟 Integer 一样,它们都提供了类似的方法,比如:

image.png

image.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值