带你领会JDK的灵活拆装 | 带你学《Java面向对象编程》之五十六

简介: 本节简单介绍了对基本数据类型的拆箱装箱操作的实现方法,同时介绍了JDK1.5之后采用自动装箱拆箱带来的便捷操作。

上一篇:包装才更美:初识包装类 | 带你学《Java面向对象编程》之五十五
【本节目标】
通过阅读本节内容,你将进一步了解包装类的相关内容,并搞懂如何进行基本数据的装箱、拆箱,学会借助更高版本的JDK简化编程过程。

装箱与拆箱操作

基本数据类型的包装类都是为了基本数据类型转为对象提供的,这样对于基本类型与包装类之间就有了如下的操作关系。

  • 数据装箱:将基本数据类型保存到包装类之中,一般可以利用构造方法完成。

    • Integer类:public Integer(int value);
    • Double类:public Double(double value);
    • Boolean类:public Boolean(boolean value);
  • 数据拆箱:从包装类中获取基本数据类型:

    • 数值型包装类已经由Number类定义了拆箱的方法了;
    • Boolean型:public boolean boolean Value();

范例:以int和Integer为例

public class JavaDemo {
    public static void main(String args[]) {
        Integer obj = new Integer(10) ;    //装箱
        int num = obj.intValue() ;    //拆箱
        System.out.println(num *num) ;
    }
}

执行结果:100
范例:以double与Double为例

public class JavaDemo {
    public static void main(String args[]) {
         Double obj = new Double(10.1) ;    //装箱
         double num = obj.doubleValue() ;    //拆箱
         System.out.println(num *num) ;
    }
}

执行结果:102.00999999999

范例:以boolean与Boolean为例

public class JavaDemo {
    public static void main(String args[]) {
        Boolean obj = new Boolean(true) ;    //装箱
        boolean num = obj.booleanValue() ;    //拆箱
        System.out.println(num) ;
    }
}

执行结果:true
可以发现从JDK1.9之后,对于所有包装类之中提供的构造方法就变为了过期处理,不建议用户继续使用了,这是因为从JDK1.5之后为了方便处理提供了自动的装箱与开箱操作,所以这种手工的模式基本上没人用了。
范例:观察自动的装箱与拆箱

public class JavaDemo {
    public static void main(String args[]) {
        Integer obj = 10 ;    //自动装箱,此时不再关心构造方法了
        int num = obj ;    //自动拆箱
        obj ++ ;    //包装类对象可以直接参与数学运算
        System.out.println(num *obj) ; //直接参与数学计算
    }
}

执行结果:110
除了提供有这种自动的数学运算支持之外,使用自动装箱最大的好处是可以实现Object接收基本数据类型的操作。
范例:Object接收小数

public class JavaDemo {
    public static void main(String args[]) {
        Object obj = 19.2 ;  //double自动装箱为Double,向上转型为object
        double num = (Double) obj ;  //向下转型为包装类,再自动拆箱
        System.out.println(num * 2) ;
    }
}

执行结果:38.4
JDK1.5之后提供的自动支持功能,到了JDK1.9之后为了巩固此概念,所以将包装类的构造方法都设置为过期定义了。
但是对于包装类需要注意一些问题了,关于相等判断上。
范例:观察相等判断

public class JavaDemo {
    public static void main(String args[]) {
       Integer x = 99 ;
       Integer y = 99 ;
       System.out.println(x == y) ;      //true
    }
}
public class JavaDemo {
    public static void main(String args[]) {
       Integer x = 128 ;
       Integer y = 128 ;
       System.out.println(x == y) ;      //false
       System.out.println(x.equals(y)) ;   //true
    }
}

以后进行包装类相等判断的时候一定要使用equals()方法完成,而包装类本身也需要考虑占位的长度,如果超过了一位的内容,那么就需要使用equals()比较,如果不超过,则使用“==”即可判断。
想学习更多的Java的课程吗?从小白到大神,从入门到精通,更多精彩不容错过!免费为您提供更多的学习资源。
本内容视频来源于阿里云大学

下一篇:初识“多继承小帮手”-接口 | 带你学《Java面向对象编程》之五十七
更多Java面向对象编程文章查看此处

相关文章
|
2月前
|
安全 Oracle Java
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
199 0
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
|
3月前
|
Oracle Java 关系型数据库
新手必看:Java 开发环境搭建之 JDK 与 Maven
本文分享了 Java 学习中 JDK 安装配置与 Maven 使用的入门知识,涵盖 JDK 下载安装、环境变量设置、Maven 安装配置及本地仓库与镜像设置,帮助新手快速搭建 Java 开发环境。
226 0
|
3月前
|
安全 Java 微服务
Java 最新技术和框架实操:涵盖 JDK 21 新特性与 Spring Security 6.x 安全框架搭建
本文系统整理了Java最新技术与主流框架实操内容,涵盖Java 17+新特性(如模式匹配、文本块、记录类)、Spring Boot 3微服务开发、响应式编程(WebFlux)、容器化部署(Docker+K8s)、测试与CI/CD实践,附完整代码示例和学习资源推荐,助你构建现代Java全栈开发能力。
395 0
|
4月前
|
安全 Java API
Java最新技术(JDK 11+) 及以上 Java 最新技术之集合框架实操应用详解
本示例基于Java最新技术(JDK 11+),涵盖集合框架的核心功能,结合Java 8+特性(如Stream API、Lambda表达式)与并发编程最佳实践。内容包括:List操作(初始化、Lambda过滤、Stream处理)、Map操作(流式过滤、ConcurrentHashMap原子操作、并行流)、Set操作(TreeSet排序、CopyOnWriteArraySet并发安全)、Queue/Deque操作(优先队列、双端队列)以及高级聚合操作(集合转换、分组统计、平均值计算)。 [代码下载](https://pan.quark.cn/s/14fcf913bae6)
79 4
|
8月前
|
Java API 数据安全/隐私保护
探索Java动态代理的奥秘:JDK vs CGLIB
动态代理是一种在 运行时动态生成代理类的技术,无需手动编写代理类代码。它通过拦截目标方法的调用,实现对核心逻辑的 无侵入式增强(如日志、事务、权限控制等)。
205 0
探索Java动态代理的奥秘:JDK vs CGLIB
|
9月前
|
Java
Java 面向对象编程的三大法宝:封装、继承与多态
本文介绍了Java面向对象编程中的三大核心概念:封装、继承和多态。
466 15
|
9月前
|
算法 Java 编译器
深入理解 Java JDK —— 让我们从基础到进阶
JDK(Java Development Kit)是 Java 开发的核心工具包,包含编译、运行和调试 Java 程序所需的所有工具和库。它主要由 JVM(Java 虚拟机)、JRE(Java 运行时环境)和 Java 核心类库组成。JVM 是跨平台运行的基础,负责字节码的加载、执行和内存管理;JRE 提供运行 Java 应用的环境;核心类库则提供了丰富的 API 支持。通过编写、编译和运行一个简单的 Java 程序,可以深入理解 JDK 的工作原理。此外,JDK 还提供了 JIT 编译、垃圾回收优化和并发工具包等高级功能,帮助开发者提高程序性能和稳定性。
804 10
|
9月前
|
Java 数据安全/隐私保护 开发者
【潜意识Java】深入理解 Java 面向对象编程(OOP)
本文介绍了Java中的面向对象编程(OOP)核心概念,包括封装、继承、多态和抽象。封装通过访问控制保护数据,提高安全性;继承支持代码复用,减少冗余;多态实现灵活的行为调用;抽象则隐藏细节,简化接口设计。掌握这些概念有助于编写高效、灵活且易于维护的代码。文章通过实例详细讲解了每个概念在Java中的应用,并总结了它们的优势。
360 3
|
11月前
|
Oracle 安全 Java
深入理解Java生态:JDK与JVM的区分与协作
Java作为一种广泛使用的编程语言,其生态中有两个核心组件:JDK(Java Development Kit)和JVM(Java Virtual Machine)。本文将深入探讨这两个组件的区别、联系以及它们在Java开发和运行中的作用。
368 1