30. 【Java教程】包装类

简介: 30. 【Java教程】包装类

本小节我们将学习 Java 的包装类,我们将了解到什么是包装类为什么需要包装类,Java 提供的包装类有哪些,各种包装类的常用方法和常量介绍,什么是装箱操作以及什么是拆箱操作等内容。

1. 什么是包装类

Java 有 8 种基本数据类型,Java 中的每个基本类型都被包装成了一个类,这些类被称为包装类。

包装类可以分为 3 类:NumberCharacterBoolean,包装类的架构图如下所示:

2. 为什么需要包装类

我们知道 Java 是面向对象的编程语言,但为了便于开发者上手,Java 沿用了 C 语言的基本数据类型,因此 Java 数据类型被分为了基本数据类型和引用数据类型。


对于简单的运算,开发者可以直接使用基本数据类型。但对于需要对象化交互的场景(例如将基本数据类型存入集合中),就需要将基本数据类型封装成 Java 对象,这是因为基本数据类型不具备对象的一些特征,没有对象的属性和方法,也不能使用面向对象的编程思想来组织代码。出于这个原因,包装类就产生了。


包装类就是一个类,因此它有属性、方法,可以对象化交互。

3. 基本数据类型与包装类

下表列出了基本数据类型对应的包装类。这些包装类都位于 java.lang 包下,因此使用包装类时,我们不需要手动引入。 image.png 除了 int 对应的包装类名称为 Integer 以及 char 对应的包装类名称 Character,其他 6 种数据类型对应的包装类,命名都为其基本数据类型的首字母的大写。

4. 包装类常用方法

4.1 Number 类

Number 类是所有数值类型包装类的父类,这里以其中一个子类 Integer 类为例,介绍其构造方法、常用方法以及常量。

4.1.1 构造方法

Integer 类提供两个构造方法:

  1. Integer(int value):以 int 型变量作为参数创建 Integer 对象;
  2. Integer(String s):以 String 型变量作为参数创建 Integer 对象。

实例如下:

// 以 int 型变量作为参数创建 Integer 对象
Integer num = new Integer(3);
// 以 String 型变量作为参数创建 Integer 对象
Integer num = new Integer("8");
4.1.2 常用方法
  • byte byteValue():以 byte 类型返回该 Integer 的值;
  • int compareTo(Integer anotherInteger):在数值上比较两个 Integer 对象。如果这两个值相等,则返回 0;如果调用对象的数值小于 anotherInteger 的数值,则返回负值;如果调用对象的数值大于 anotherInteger 的数值,则返回正值;
  • boolean equals(Object obj):比较此对象与指定对象是否相等;
  • int intValue():以 int 类型返回此 Integer 对象;
  • int shortValue():以 short 类型返回此 Integer 对象;
  • toString():返回一个表示该 Integer 值的 String 对象;
  • static Integer valueOf(String str):返回保存指定的 String 值的 Integer 对 象;
  • int parseInt(String str):返回包含在由 str 指定的字符串中的数字的等价整数值。

更多常用方法请翻阅官方文档。

4.1.3 常用常量
  1. MAX_VALUE: 表示 int 型可取的最大值;
  2. MIN_VALUE: 表示 int 型可取的最小值;
  3. SIZE:表示以二进制补码形式表示 int 值的位数;
  4. TYPE: 表示基本类型 Class 实例。

这些常量的使用实例如下:

public class WrapperClassDemo1 {
 
    public static void main(String[] args) {
        int maxValue = Integer.MAX_VALUE;
        int minValue = Integer.MIN_VALUE;
        int size = Integer.SIZE;
        System.out.println("int 类型可取的最大值" + maxValue);
        System.out.println("int 类型可取的最小值" + minValue);
        System.out.println("int 类型的二进制位数" + size);
    }
 
}

运行结果:

int 类型可取的最大值2147483647
int 类型可取的最小值-2147483648
int 类型的二进制位数32

4.2 Character 类

Character 类在对象中包装一个基本类型为 char 的值。一个 Character 对象包含类型为 char 的单个字段。

4.2.1 构造方法

Character 类提供了一个构造方法:

Character(char value):很少使用。

4.2.2 常用方法

char charValue():返回此 Character 对象的值;

int compareTo(Character anotherCharacter):返回此 Character 对象的值,根据数字比较两个 Character 对象,若这两个对象相等则返回 0 ;

boolean equals(Object obj):将调用该方法的对象与指定的对象相比较;

char toUpperCase(char ch):将字符参数转换为大写;

char toLowerCase(char ch):将字符参数转换为小写;

String toString():返回一个表示指定 char 值的 String 对象;

char charValue():返回此 Character 对象的值;

boolean isUpperCase(char ch):判断指定字符是否是大写字符;

boolean isLowerCase(char ch):判断指定字符是否是小写字符。

4.3 Boolean 类

Boolean 类将基本类型为 boolean 的值包装在一个对象中。一个 Boolean 类型的对象只包含一个类型为 boolean 的字段。此外,此类还为 boolean 和 String 的相互转换提供了许多方法,并提供了处理 boolean 时非常有用的其他一些常量和方法。

4.3.1 构造方法

Boolean 类提供了如下两个构造方法:

Boolean(boolean value):创建一个表示 value 参数的 boolean 对象(很少使用);

Boolean(String s):以 String 变量作为参数,创建 boolean 对象。此时,如果传入的字符串不为 null,且忽略大小写后的内容等于 “true”,则生成 Boolean 对象值为 true,反之为 false。(很少使用)。

4.3.2 常用方法

boolean booleanValue():将 Boolean 对象的值以对应的 boolean 值返回;

boolean equals(Object obj):判断调用该方法的对象与 obj 是否相等,当且仅当参数不是 null,而且与调用该方法的对象一样都表示同一个 boolean 值的 Boolean 对象时, 才返回 true;

boolean parseBoolean(Sting):将字符串参数解析为 boolean 值;

String toString():返回表示该 boolean 值的 String 对象;

boolean valueOf(String s):返回一个用指定的字符串表示值的 boolean 值。

4.3.3 常用常量
  • TRUE:对应基值 true 的 Boolean 对象;
  • FALSR:对应基值 false 的 Boolean 对象;
  • TYPE:表示基本类型 Class 实例。

5. 装箱和拆箱

装箱就是基本数据类型向包装类转换;拆箱就是包装类向基本数据类型转换。装箱和拆箱又有自动和手动之分。

实现装箱的实例如下:

public class WrapperClassDemo2 {
 
    public static void main(String[] args) {
        // 自动装箱
        int num1 = 19;
        Integer num2 = num1;
        System.out.println("num2=" + num2);
 
        // 手动装箱
        Integer num3 = new Integer(20);
        System.out.println("num3=" + num3);
    }
 
}

运行结果:

1. num2=19
2. num3=20

自动装箱就是直接将一个基本数据类型的变量,赋值给对应包装类型的变量;手动装箱就是调用包装类的构造方法(在 Java14 中已经过时,不推荐这样的操作)。

实现拆箱的实例如下:

public class WrapperClassDemo3 {
 
    public static void main(String[] args) {
        // 自动拆箱
        Integer num1 = 19;
        int num2 = num1;
        System.out.println("num2=" + num2);
 
        // 手动拆箱
        int num3 = num1.intValue();
        System.out.println("num3=" + num3);
    }
 
}

运行结果:

1. num2=19
2. num3=19

自动拆箱就是直接将一个包装类型的变量,赋

6. 小结

通过本小节的学习,我们知道了包装类就是将基本数据类型包装成的类,它有属性、方法,可以对象化交互。除了 int 对应的包装类名称为 Integer 以及 char 对应的包装类名称 Character,其他 6 种数据类型对应的包装类,命名都为其基本数据类型的首字母的大写。装箱就是基本数据类型向包装类转换,拆箱就是包装类向基本数据类型转换。


相关文章
|
12天前
|
消息中间件 Java 数据库
自研Java框架 Sunrays-Framework使用教程「博客之星」
### Sunrays-Framework:助力高效开发的Java微服务框架 **Sunrays-Framework** 是一款基于 Spring Boot 构建的高效微服务开发框架,深度融合了 Spring Cloud 生态中的核心技术组件。它旨在简化数据访问、缓存管理、消息队列、文件存储等常见开发任务,帮助开发者快速构建高质量的企业级应用。 #### 核心功能 - **MyBatis-Plus**:简化数据访问层开发,提供强大的 CRUD 操作和分页功能。 - **Redis**:实现高性能缓存和分布式锁,提升系统响应速度。 - **RabbitMQ**:可靠的消息队列支持,适用于异步
自研Java框架 Sunrays-Framework使用教程「博客之星」
|
14天前
|
Java 数据库连接 数据处理
探究Java异常处理【保姆级教程】
Java 异常处理是确保程序稳健运行的关键机制。它通过捕获和处理运行时错误,避免程序崩溃。Java 的异常体系以 `Throwable` 为基础,分为 `Error` 和 `Exception`。前者表示严重错误,后者可细分为受检和非受检异常。常见的异常处理方式包括 `try-catch-finally`、`throws` 和 `throw` 关键字。此外,还可以自定义异常类以满足特定需求。最佳实践包括捕获具体异常、合理使用 `finally` 块和谨慎抛出异常。掌握这些技巧能显著提升程序的健壮性和可靠性。
34 4
|
14天前
|
存储 移动开发 算法
【潜意识Java】Java基础教程:从零开始的学习之旅
本文介绍了 Java 编程语言的基础知识,涵盖从简介、程序结构到面向对象编程的核心概念。首先,Java 是一种高级、跨平台的面向对象语言,支持“一次编写,到处运行”。接着,文章详细讲解了 Java 程序的基本结构,包括包声明、导入语句、类声明和 main 方法。随后,深入探讨了基础语法,如数据类型、变量、控制结构、方法和数组。此外,还介绍了面向对象编程的关键概念,例如类与对象、继承和多态。最后,针对常见的编程错误提供了调试技巧,并总结了学习 Java 的重要性和方法。适合初学者逐步掌握 Java 编程。
39 1
|
2月前
|
移动开发 前端开发 Java
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
JavaFX是Java的下一代图形用户界面工具包。JavaFX是一组图形和媒体API,我们可以用它们来创建和部署富客户端应用程序。 JavaFX允许开发人员快速构建丰富的跨平台应用程序,允许开发人员在单个编程接口中组合图形,动画和UI控件。本文详细介绍了JavaFx的常见用法,相信读完本教程你一定有所收获!
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
|
2月前
|
NoSQL Java 关系型数据库
Liunx部署java项目Tomcat、Redis、Mysql教程
本文详细介绍了如何在 Linux 服务器上安装和配置 Tomcat、MySQL 和 Redis,并部署 Java 项目。通过这些步骤,您可以搭建一个高效稳定的 Java 应用运行环境。希望本文能为您在实际操作中提供有价值的参考。
158 26
|
14天前
|
前端开发 Java 开发工具
Git使用教程-将idea本地Java等文件配置到gitte上【保姆级教程】
本内容详细介绍了使用Git进行版本控制的全过程,涵盖从本地仓库创建到远程仓库配置,以及最终推送代码至远程仓库的步骤。
23 0
|
2月前
|
安全 Java 编译器
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
|
2月前
|
Java 开发工具 Android开发
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
|
3月前
|
Java 编译器 Android开发
Kotlin教程笔记(28) -Kotlin 与 Java 混编
Kotlin教程笔记(28) -Kotlin 与 Java 混编
47 2
|
2月前
|
Java 数据库连接 编译器
Kotlin教程笔记(29) -Kotlin 兼容 Java 遇到的最大的“坑”
Kotlin教程笔记(29) -Kotlin 兼容 Java 遇到的最大的“坑”
76 0