包装类(装箱&拆箱&数据类型转换)

简介: ​在Java5 中添加了两个新特性,那就是自动装箱和拆箱,因为基本类型的广泛使用,但是Java 又是面向对象的语言,所以提供了包装类型的支持。

 目录

前言

一、包装类

1.包装类其实就是8种数据类型对应的引用类型

2.为什么要使用包装类

二、装箱和拆箱

1.装箱

2.拆箱

三、包装类特有功能

1.包装类默认值

2.基本类型转字符串类型

 3.字符串类型转基本类型

总结


前言

在Java5 中添加了两个新特性,那就是自动装箱和拆箱,因为基本类型的广泛使用,但是Java 又是面向对象的语言,所以提供了包装类型的支持。


一、包装类

1.包装类其实就是8种数据类型对应的引用类型

image.gif

2.为什么要使用包装类

JAVA是面向对象语言,为了实现一切皆对象,于是为8种基本数据类型提供了对于的引用类型

集合和泛型只支持包装类型,不支持基本数据类型

比如:List<int> = new ArrayList<>();编译就会报错

为了解决该问题,我们引入了包装类,顾名思义,就是将基本类型“包装起来“,使其具备对象的性质,包括可以添加属性和方法,位于java.lang包下。

二、装箱和拆箱

既然有了基本数据类型和包装类,就必然存在它们之间的转换

1.装箱

基本数据类型转化为对应类型的包装类的过程叫“装箱”;

public static void main(String[] args) {
        int a = 10;
        Integer b = a; //自动装箱
}

image.gif

2.拆箱

包装类转为对应类型的基本数据类型的过程叫“拆箱

public static void main(String[] args) {
        Integer c = 11;
        int d = c;  //自动拆箱
    }

image.gif

三、包装类特有功能

1.包装类默认值

包装类的变量的默认值可以是null,容错率更高

image.gif

image.gif

2.基本类型转字符串类型

包装类可以把基本类型的数据转换为字符串形式,如下图有三种方式

image.gif

 3.字符串类型转基本类型

如下图,不管是把字符串转换成整数还是小数,都可以直接调valueof方法

public static void main(String[] args) {
        //转换整数
        String number = "18";
        int age = Integer.parseInt(number);
        int age = Integer.valueOf(number);
        //转换小数
        String number2 = "18.5";
        double age1 = Double.parseDouble(number2);
        double age1 = Double.valueOf(number2);
    }

image.gif

总结

建议使用valueOf() 方法创建一个包装类实例而不是直接使用构造方法,因为该方法可以走缓存提高性能

目录
相关文章
|
Cloud Native 架构师 Devops
云原生时代领域驱动设计(DDD)的价值——从《没有银弹》说起
软件开发需要面对本质困难和附属困难。云原生、DevOps实践大幅降低了附属困难,使得架构师可以全力聚焦于业务复杂性,而DDD恰是管理业务复杂性的有效方法。
1769 0
云原生时代领域驱动设计(DDD)的价值——从《没有银弹》说起
|
人工智能 安全 Linux
云+AI时代下,Alibaba Cloud Linux 进一步演进思考
用好开源、做深开源、自研创新,打造全方位安全可信的服务器操作系统。
|
存储 编解码 索引
视频基础知识 2
视频基础知识
408 0
|
JSON Java 数据格式
基于 Kotlin + OkHttp 实现易用且功能强大的网络框架(一)
基于 Kotlin + OkHttp 实现易用且功能强大的网络框架(一)
989 0
基于 Kotlin + OkHttp 实现易用且功能强大的网络框架(一)
|
6天前
|
云安全 人工智能 安全
AI被攻击怎么办?
阿里云提供 AI 全栈安全能力,其中对网络攻击的主动识别、智能阻断与快速响应构成其核心防线,依托原生安全防护为客户筑牢免疫屏障。
|
15天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
10天前
|
安全 Java Android开发
深度解析 Android 崩溃捕获原理及从崩溃到归因的闭环实践
崩溃堆栈全是 a.b.c?Native 错误查不到行号?本文详解 Android 崩溃采集全链路原理,教你如何把“天书”变“说明书”。RUM SDK 已支持一键接入。
617 215
|
存储 人工智能 监控
从代码生成到自主决策:打造一个Coding驱动的“自我编程”Agent
本文介绍了一种基于LLM的“自我编程”Agent系统,通过代码驱动实现复杂逻辑。该Agent以Python为执行引擎,结合Py4j实现Java与Python交互,支持多工具调用、记忆分层与上下文工程,具备感知、认知、表达、自我评估等能力模块,目标是打造可进化的“1.5线”智能助手。
859 61