【自学笔记】01Java基础-08Java常用API:04包装类

news2024/12/23 14:52:26

记录Java基础-常用API-有关时间日期的类。

1 包装类

  • 其实就是8种基本数据类型对应的引用类型,因为基本数据类型不能直接参与面向对象编程。
  • 具有将基本数据类型转换为对象的功能,并且实现了多种接口,支持集合框架和泛型。

在这里插入图片描述
包装类的主要特点和功能

  • 自动装箱与拆箱:从Java 5开始引入了自动装箱和自动拆箱机制,使得基本数据类型和其对应的包装类之间可以自动转换。

    • 自动装箱:基本类型的数据和变量可以直接赋值给包装类型的变量。

    • 自动拆箱:包装类型的变量可以直接赋值给基本数据类型的变量。

  • 空值处理:基本类型无法表示null,而包装类可以持有null值,这在需要区分值存在与否的场景下非常有用。

  • 实现接口:包装类通常实现了诸如Comparable、Serializable、Cloneable等接口,使得基本类型能够参与到这些接口定义的方法调用中。

  • 方法扩展:包装类提供了一些基本类型不具备的方法,如Integer类的parseInt()、toString()方法,以及用于缓存特定范围内的对象以提高性能的静态工厂方法valueOf()等。

包装类使用示例

假设在SpringBoot应用中有一个API接口,用于返回用户的年龄信息。由于年龄(age)是一个基本类型int,在处理HTTP请求和响应时,通常会将其封装到一个包含状态码和具体数据的包装类中。

首先,创建一个表示用户年龄响应的包装类 AgeResponse

import org.springframework.http.HttpStatus;

public class AgeResponse {

    private int code; // 状态码
    private String message; // 消息提示
    private Integer age; // 年龄数据

    public AgeResponse(HttpStatus status, String message, Integer age) {
        this.code = status.value();
        this.message = message;
        this.age = age;
    }

    // Getter与Setter方法
    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

然后,在Controller层,当处理完查询用户年龄的请求后,可以将年龄信息封装到AgeResponse中返回给前端:

import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.http.HttpStatus;

@RestController
public class UserController {

    @GetMapping("/users/{id}/age")
    public ResponseEntity<AgeResponse> getUserAge(@PathVariable("id") Long id) {
        // 假设userService是获取用户年龄的业务服务
        Integer userAge = userService.getUserAgeById(id);

        if (userAge != null) {
            // 将年龄信息封装到AgeResponse中
            AgeResponse response = new AgeResponse(HttpStatus.OK, "获取成功", userAge);
            return ResponseEntity.ok(response);
        } else {
            // 用户不存在或年龄未找到时的状态码和消息
            AgeResponse response = new AgeResponse(HttpStatus.NOT_FOUND, "未找到该用户的年龄信息", null);
            return ResponseEntity.status(HttpStatus.NOT_FOUND).body(response);
        }
    }
}

这样,客户端收到的响应就是一个包含了状态码、消息以及实际年龄数据的对象,便于前后端进行统一的数据交互格式。这里的Integer就是对基本类型int的包装类,它允许我们设置null值,并提供了更多的对象操作功能。

2 Arrays类

  • java.util.Arrays 类是Java标准库中的一个工具类,提供了处理数组的各种静态方法。
  • 这个类包含了对数组的排序、搜索、填充、比较以及转换为列表等多种操作。
  1. 排序

    • sort(int[] a):对整型数组进行升序排序。
    • sort(Object[] a, Comparator<? super T> c):对对象数组按照指定的比较器进行排序。
  2. 查找

    • binarySearch(int[] a, int key):在有序整型数组中使用二分查找算法查找指定元素并返回索引,找不到则返回负数。
    • equals(int[] a, int[] a2):检查两个整型数组是否相等。
  3. 填充

    • fill(int[] a, int val):将整型数组的所有元素设置为给定的值。
  4. 比较

    • deepEquals(Object[] a1, Object[] a2):深度比较两个数组的内容是否相同,对于数组内的对象也会递归进行内容比较。
  5. 复制

    • copyOf(int[] original, int newLength):创建原数组的一个副本,并可以指定新数组的长度。
  6. 转换为List

    • asList(T... a):将数组转换为固定大小的List视图,注意虽然看起来像List,但它不支持add或remove等修改操作。
  7. 其他方法

    • hashCode(int[] a):计算数组的哈希码。
    • toString(int[] a):将数组的内容转换成字符串表示形式。
    • 还有针对不同数据类型的类似方法,如long[]double[]Object[]等。

通过 Arrays 类,开发者能够方便地对数组进行各种基础操作,提高代码效率和简洁性。不过,对于多维数组的操作,通常需要循环嵌套调用 Arrays 的方法来实现。此外,在Java 8及更高版本中,Stream API提供了更多灵活且强大的数组操作方式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1374304.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

智能AI一键养号,助力账号增加浏览轨迹的全新体验

我想分享一下我对亚马逊鲲鹏系统的智能AI一键养号功能的使用体验。这一创新性的功能让账号的养号过程变得更加轻松、灵活且有效。 首先&#xff0c;我对软件的AI功能页面印象深刻。通过勾选不同的姓名、职业、性别等选项&#xff0c;我可以生成各种不同的AI角色。这些角色使得账…

个人事务备忘录管理微信小程序

介绍 UniApp是一款使用Vue.js开发所有前端应用的框架&#xff0c;能够同时在iOS、Android、H5、小程序等多个平台上运行&#xff1b;所以本系统可以是一个安卓app&#xff0c;也可以是微信小程序 系统包括以下功能&#xff1a; 备忘录 管理个人事务 记事本 事务分类 日记编写…

从优化设计到智能制造:生成式AI在可持续性3D打印中的潜力和应用

可持续性是现代工业中一个紧迫的问题&#xff0c;包括 3D 打印领域。为了满足环保制造实践日益增长的需求&#xff0c;3D 打印已成为一种有前景的解决方案。然而&#xff0c;要使 3D 打印更具可持续性&#xff0c;还存在一些需要解决的挑战。生成式人工智能作为一股强大的力量&…

EasyExcel简单实例

EasyExcel简单实例 准备工作场景一&#xff1a;读取 Student 表需求1&#xff1a;简单读取需求2&#xff1a;读取到异常信息时不中断需求3&#xff1a;读取所有的sheet工作表需求4&#xff1a;读取指定的sheet工作表需求5&#xff1a;从指定的行开始读取 场景二&#xff1a;写入…

《Vue2 进阶知识》动态挂载组件之Vue.extend + vm.$mount

前言 目前工作还是以 Vue2 为主&#xff0c;今早有人提问 如何动态挂载组件&#xff1f; 话说很久很久以前就实现过&#xff0c;今天再详细的整理一下此问题&#xff01; 开始 动态组件如下&#xff0c;是个简单的例子&#xff1a; 但请注意这里给了个 id"test2"…

探索义乌购API接口:引领全球小商品交易新篇章,赋能商家无限可能

义乌购API接口技术详解 一、引言 义乌购作为全球最大的小商品集散中心&#xff0c;为全球的商家和消费者提供了丰富的商品资源和交易服务。义乌购API接口作为其开放平台的重要组成部分&#xff0c;为开发者提供了一系列的API接口&#xff0c;使得第三方开发者能够通过编程方式…

05- OpenCV:图像操作和图像混合

目录 一、图像操作 1、读写图像 2、读写像素 3、修改像素值 4、Vec3b与Vec3F 5、相关的代码演示 二、图像混合 1、理论-线性混合操作 2、相关API(addWeighted) 3、代码演示&#xff08;完整的例子&#xff09; 一、图像操作 1、读写图像 &#xff08;1&#xff09;…

vue 公众号开发,调用jssdk封装

vue 公众号开发&#xff0c;经常会使用到 转发朋友&#xff0c;朋友圈&#xff0c;调用扫一扫等功能&#xff0c;这时就要使用微信的 jssdk 微信jssdk传送门 1. 安装jssdk 插件 (jweixin-module) npm install jweixin-module --save 2. 封装方法 utils/jwx.js let jweixin…

【好书推荐】驾驭科技浪潮的新型人才,要学点心理学

“2023年&#xff0c;是疯狂的一年&#xff0c;是世界终于开始认真对待AI的一年。” Sam Altman在社交平台写到。 回顾今年&#xff0c;年初Chat GPT横空出圈&#xff0c;其超强的理解能力、深度学习能力、人机对话的流畅性和智能度&#xff0c;让世界为之折服。 很快&#…

消息开始事件message start event

一&#xff1a;bpmn 二&#xff1a;java repositoryService.createDeployment().name("消息事件流程").addClasspathResource("bpmn/msg_event_process.bpmn").deploy(); identityService.setAuthenticatedUserId("huihui"); ProcessInstance p…

转专业(UPC练习)

题目描述 根据教育部的规定&#xff0c;大学生进校后符合条件的可申请转专业。在校本科生在完成大学一年级课程&#xff0c;进入二年级之前&#xff0c;符合以下条件之一者&#xff0c;可以申请转专业&#xff1a;&#xff08;1&#xff09;在某一学科方面确有特长的学生&#…

通义千问Qwen-72B-Chat基于PAI的低代码微调部署实践

作者&#xff1a;熊兮、求伯、一耘 引言 通义千问-72B&#xff08;Qwen-72B&#xff09;是阿里云研发的通义千问大模型系列的720亿参数规模模型。Qwen-72B的预训练数据类型多样、覆盖广泛&#xff0c;包括大量网络文本、专业书籍、代码等。Qwen-72B-Chat是在Qwen-72B的基础上…

three.js 关键帧动画

效果&#xff1a; 代码&#xff1a; <template><div><el-container><el-main><div class"box-card-left"><div id"threejs" style"border: 1px solid red"></div><div class"box-right"…

【架构】API接口安全防护救命的11招

前言 如何保证接口的安全性? 根据多年的工作经验,给大家介绍一下保证接口安全的一些小技巧,希望对你会有所帮助。 1 参数校验 保证接口安全的第一步,也是最重要的一步,需要对接口的请求参数做校验。 如果我们把接口请求参数的校验做好了,真的可以拦截大部分的无效请求…

使用paho.mqtt.embedded-c和openssl实现MQTT的单向认证功能

1、背景 由于项目有需求在一个现有的产品上增加MQTT通信的功能&#xff0c;且出于安全考虑&#xff0c;MQTT要走TLS&#xff0c;采用单向认证的方式。 2、方案选择 由于是在现有的产品上新增功能&#xff0c;那么为了减少总的成本&#xff0c;故选择只动应用软件的来实现需求。…

设置若依Token过期时间

方法一&#xff1a;设置永不过期&#xff0c;有安全隐患&#xff0c;不建议使用 redisCache.setCacheObject(userKey, loginUser); 方法二&#xff1a;修改application.yml

Flutter组件GridView使用介绍

介绍 GridView 是 Flutter 中用于创建网格布局的滚动小部件。它可以创建多列布局&#xff0c;并且每个网格单元可以包含一个小部件。 GridView 提供了几种构造函数来创建不同类型的网格布局&#xff1a; GridView&#xff1a;最通用的构造函数&#xff0c;完全自定义网格布局…

vs报错TypeError: Cannot read property ‘parseComponent‘ of undefined(已解决)

目录 错误分析&#xff1a; 解决方案&#xff1a; 1.卸载 vue-template-compiler&#xff1a; 2.查看项目中已经安装的 Vue 的版本。 3.安装特定版本的 vue-template-compiler&#xff1a; 4.现在重新运行一下&#xff0c;成功&#xff01; 错误分析&#xff1a; 这是因…

练习接口测试第一步骤

最近一段时间学了Python语言&#xff0c;重新学了 Java&#xff0c;js&#xff0c;html语言&#xff0c;CSS&#xff0c;linux&#xff0c;一堆测试工具&#xff1b;唉&#xff5e; 在接触接口测试过程中补了很多课&#xff0c; 终于有点领悟接口测试的根本&#xff1b; 偶是…