【Java 数据结构】泛型和包装类

🔥 博客主页🔥 :【 坊钰_CSDN博客

欢迎各位点赞👍 评论**✍收藏⭐**

目录

[1. 包装类](#1. 包装类)

[1.1 基本类型对应的包装类](#1.1 基本类型对应的包装类)

[1.2 装箱和拆箱](#1.2 装箱和拆箱)

[1.3 自动装箱和拆箱](#1.3 自动装箱和拆箱)

[2. 泛型](#2. 泛型)

[2.1 泛型的写法](#2.1 泛型的写法)

[2.2 泛型的上界](#2.2 泛型的上界)

[3. 小结](#3. 小结)


1. 包装类

Java 中有一句话,万物皆可以为类,同样整型 int a = 10 ; 这个时类吗?显然它为整型,并不属于对象的范畴,那要把整型转为对象时,就要用到包装类了

1.1 基本类型对应的包装类

只有 char 类型 和 int 类型 的包装类为 Character 和 Integer ,其他的都为自身首字母大写

1.2 装箱和拆箱

java 复制代码
public class Test {
    public static void main(String[] args) {
        //装箱操作-把整型数据(int)转换为 Integer 类型对象
        Integer a = Integer.valueOf(10);
        //装箱操作- Integer 类型对象 a  转换为 整型(int)
        int b = a.intValue();
    }
}

1.3 自动装箱和拆箱

java 复制代码
public class Test {
    public static void main(String[] args) {
        int a = 10;
        Integer b = 20;
        //可直接赋值,编译器自动转化
        Integer A = a;
        int B = b;
    }
}

自动装箱和拆箱是编译器自动完成的,不需要手动去完成

下面有一道面试题

java 复制代码
public class Test {
    public static void main(String[] args) {
        Integer a = 127;
        Integer b = 127;

        Integer A = 128;
        Integer B = 128;
        
        System.out.println(a==b);
        System.out.println(A==B);
    }
}

这里可以看源码分析

因为 整型 的数据范围是 [-128 ~ 127] ,根据源码,如果在这个范围,就返回相同的对象地址,如果超过这个范围,就返回一个创建新的对象,所以,上述结果不一样

2. 泛型

泛型:就是适用于许多类型,对类型实现了参数化

泛型的主要作用:就是指定当前容器要储存什么的类型,需要什么类型,就传入什么类型

2.1 泛型的写法

java 复制代码
class 泛型类名<参数列表> {
//.....
}

class 泛型类名<参数列表> extends 继承类 {
//.....
}

举例:存储前 10 位学生的成绩

java 复制代码
class Score<T> {
    public Object[] array = new Object[10];
    
    public T getPos(int pos) {
        return (T) this.array[pos];
    }
    
    public void setPos(int pos,T val) {
        this.array[pos] = val;
    }
}

public class StudentScore {
    public static void main(String[] args) {
        //指定泛型的类型为整型    
        Score<Integer> score = new Score<>();
        score.setPos(0,90);
        score.setPos(1,70);
        score.setPos(2,90);
        System.out.println(score.getPos(2));
    }
}

2.2 泛型的上界

在定义泛型时,可以加入一些特定的约束

java 复制代码
class 泛型名称<类型形参 extends 类型边界> {
//.......
}

比如:

java 复制代码
class MyArray<T extends Number> {
//.......
}

这里的 T 只接受 Number类的子类,如果为其他的,则报错

3. 小结

以上就是对泛型和包装类的了解,具体还需宝子们去实践,如果觉得该博客对你有用的话,希望一键三连,点个关注不迷路,谢谢支持 !

相关推荐
心灵宝贝41 分钟前
Mac 安装 JDK 8u281(JDK-8u281-1.dmg)详细步骤(附安装包)
java·macos·intellij-idea
記億揺晃着的那天43 分钟前
从单体到微服务:如何拆分
java·微服务·ddd·devops·系统拆分
拾忆,想起43 分钟前
Dubbo超时问题排查与调优指南:从根因到解决方案
服务器·开发语言·网络·微服务·架构·php·dubbo
7ioik2 小时前
什么是线程池?线程池的作用?线程池的四种创建方法?
java·开发语言·spring
切糕师学AI2 小时前
Lombok 注解 @Slf4j
java·lombok
晨非辰2 小时前
数据结构排序系列指南:从O(n²)到O(n),计数排序如何实现线性时间复杂度
运维·数据结构·c++·人工智能·后端·深度学习·排序算法
寻星探路2 小时前
JavaSE重点总结后篇
java·开发语言·算法
EAIReport2 小时前
自动化报告生成产品内嵌OA/BI平台:解决传统报告痛点的技术方案
java·jvm·自动化
Charles_go3 小时前
C#中级8、什么是缓存
开发语言·缓存·c#
松涛和鸣4 小时前
14、C 语言进阶:函数指针、typedef、二级指针、const 指针
c语言·开发语言·算法·排序算法·学习方法