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

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

1 包装类

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

【自学笔记】01Java基础-08Java常用API:04包装类_第1张图片
包装类的主要特点和功能

  • 自动装箱与拆箱:从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 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提供了更多灵活且强大的数组操作方式。

你可能感兴趣的:(自学笔记,笔记,开发语言,java)