[初阶数据结构] 包装类 | 泛型

news2024/12/23 18:57:18

目录

一. 包装类

        1.1 什么是包装类? 

        1.2 包装类的意义

        1.3 基本数据类型与包装类 

        1.4 装箱

        1.5 拆箱 

        1.6 小总结

二. 泛型 

        2.1 什么是泛型?

        2.2 泛型的意义 

         2.3 泛型的语法

         2.4 泛型的编译

                2.4.1 下载插件

                2.4.2 分析

        2.5 上界

        2.6 泛型方法

         2.7 小总结

三. 总结


一. 包装类

        1.1 什么是包装类? 

包装类是java本身预定义的类, 在包装类中存在着成员方法(操作包装类对象), 每个包装类都对应一个基本数据类型. (可以理解为包装类是基本数据类型的plus版本)

        1.2 包装类的意义

 包装类存在的最大意义就是在使用泛型时, 把包装类作为参数传递.(基本数据类型不能够作为泛型参数传递)

        1.3 基本数据类型与包装类 

 boolean -> Boolean

 char -> Character

 float -> Float     double -> Double

 byte -> Byte     short -> Short     int -> Integer     long -> Long     

总共有八对, int 和 character 特殊, 其他的都是首字母大写.

        1.4 装箱

装箱(装包): 基本数据类型 -> 包装类类型.

装箱分为:

a. 显式装箱.

(使用valueOf方法.)

b. 自动装箱.

        1.5 拆箱 

拆箱(拆包): 包装类类型 -> 基本数据类型. 

拆箱分为:

a. 显式拆箱.

(使用intValue方法.)

b. 自动拆箱. 

        1.6 小总结

包装类存在的最大意义就是在使用泛型的时候作为参数传递. 


二. 泛型 

        2.1 什么是泛型?

 泛型就是一个类可以支持不同的数据类型, 把数据类型作为参数传递, 实现了类型的参数化.

        2.2 泛型的意义 

a. 实现了代码的复用. (当需要使用这个类实现不同的功能时, 只需要更改传入的类型参数, 而不需要再重新写一个类.) 

b. 在传入参数时自动进行类型检查.

c. 在返回时自动进行类型转换.

         2.3 泛型的语法

 class 类名<参数列表> { // ... }

 即 class 类名<T1, T2, T3> { // ... }

         2.4 泛型的编译

                2.4.1 下载插件

                2.4.2 分析

图一:  

                     

图二:

    

可以发现: 在编译完成之后, 所有的T1, T2, T3 都被替换成了 Object (所有类的父类), 这就是 泛型的擦除机制.

也就是说, 泛型只存在于程序编译的过程中, 在编译完成之后(运行时), 不存在泛型. 

        2.5 上界

语法:

class 类名<T1 extends T2> { // ... }

即 T1 必须是 T2的子类 或者 实现了T2 接口 或者 是 T2. 

例子:

T 必须是 Integer的子类 或者是 Integer.

        2.6 泛型方法

T extends Number: T是Number的子类 或者 就是 Number.

func(T a, T b): 传入参数时, 进行类型检查.

T func(...): 返回时, 进行类型转换.

test2.<Integer>func(10, 20): 进行类型参数的传递.

泛型方法的意义:

a. 实现了代码的复用.

b. 传参时进行类型检查.

c. 返回时进行类型转换.

         2.7 小总结

泛型就是进行了类型的传递, 以此来实现代码的复用.


三. 总结

a. 包装类存在的最大意义就是在使用泛型时, 作为参数传递.

b. 泛型就是进行了类型的传递, 并以此来实现代码的复用.

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

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

相关文章

element-ui将组件默认语言改为中文

在main.js中加入以下代码即可 // 引入 Element Plus 及其样式 import ElementPlus from element-plus import element-plus/dist/index.css// 引入中文语言包 import zhCn from element-plus/es/locale/lang/zh-cn// 使用 Element Plus 并设置语言为中文 app.use(ElementPlus,…

乐鑫ESP32系列SOC技术让设备控制更简单,HMI智能屏方案应用

随着科技的飞速发展&#xff0c;我们的生活方式正在被重新定义。在智能家居领域&#xff0c;人机交互的便捷性和直观性一直是创新的焦点&#xff0c;如今正逐渐成为现实。 乐鑫以其先进的SoC技术&#xff0c;为智能家居行业带来了新的HMI智能屏方案。这一方案不仅集成了高性能…

商用OLED柔性屏,有42、48、55、65和77寸

商用OLED柔性屏在市场上的尺寸选择相对丰富&#xff0c;以下是针对您提到的42、48、55、65和77寸的具体信息&#xff1a; 42寸OLED柔性屏 目前市场上已有42寸的OLED柔性屏产品&#xff0c;如LG的42英寸电视柔性屏OLED&#xff0c;具有可曲直的特性&#xff0c;支持120Hz高刷新…

LogicFlow 学习笔记——1. 初步使用 LogicFlow

什么是 LogicFlow LogicFlow 是一个开源的前端流程图编辑器和工作流引擎&#xff0c;旨在帮助开发者和业务人员在网页端创建、编辑和管理复杂的业务流程和工作流。它提供了一个直观的界面和强大的功能&#xff0c;使得设计和管理工作流变得更加高效和便捷。 官网地址&#xff…

芯品荟 | 会议系统屏驱案例分享

一、产品简介 智能会议系统是一种对声、光、电等各种设备进行集中控制的设备。其可实现对会议过程进行签到、表决、多国语言翻译、现场摄像视像跟踪功能&#xff0c;并对进程中处以发言管理&#xff0c;达到人性化高科技水平&#xff0c;使会议可一键掌控。 系统要做到可方便快…

profiling模型性能分析与优化入门

一、定义 profiler 作用入门pyproftorch.summary/torchinfo 模型参数量分析以及模型可视化profiling 参数分析-模型分析 二、实现 1.profiler 作用&#xff1a;分析模型执行时间,内存占用 CPU/GPU 端Op执行时间统计 CPU/GPU 端Op输入Tensor的维度分析 Op的内存消耗统计 2. 入…

3D开发工具HOOPS如何推动3D打印应用实现数据格式转换、模型可视化?

3D打印技术的发展已经彻底改变了制造业、医疗、建筑和设计等众多领域。这一技术的核心在于其能够将数字模型转化为实物&#xff0c;而这一过程需要强大的软件支持。在这一领域&#xff0c;HOOPS作为一种专业的图形软件开发工具&#xff0c;发挥着至关重要的作用。 本文将深入探…

木板甲醛释放量气候箱法检测 木制品ENF级检测

甲醛释放量气候箱法检测 甲醛释放量气候箱法检测是一种用于评估木制品中甲醛释放量的标准测试方法。这种方法通常涉及将样品放置在一个密闭的气候箱内&#xff0c;模拟一定的温度、湿度和通风条件&#xff0c;然后定期测量箱内空气中的甲醛浓度。通过这些数据&#xff0c;可以计…

【ARM Cache 与 MMU 系列文章 7.5 -- ARMv8/v9 MMU FEAT_XS(XS Attribute)与 FEAT_MTE2 介绍】

请阅读【ARM Cache 及 MMU/MPU 系列文章专栏导读】 及【嵌入式开发学习必备专栏】 文章目录 MMU FEAT_XSXS AttributeXS Attribute 兼容性和影响XS Attribute 应用场景MMU FEAT_MTE2MTE2 主要目的和用途MTE2 工作原理MTE2 特性实现MTE2 注意事项MMU FEAT_XS 在ARMv8架构中,FE…

k8s之HPA,命名空间资源限制

一、HPA 的相关知识 HPA&#xff08;Horizontal Pod Autoscaling&#xff09;Pod 水平自动伸缩&#xff0c;Kubernetes 有一个 HPA 的资源&#xff0c;HPA 可以根据 CPU 利用率自动伸缩一个 Replication Controller、Deployment 或者Replica Set 中的 Pod 数量。 &#xff08;…

docker-compose部署一款老牌apm监控软件-- pinpoint(需定制docker镜像)

一、背景 公司测试环境需要重新部署一套apm监控软件&#xff0c;选择的是我们开发都使用过的pinpoint&#xff0c;当然首选使用docker-compose部署。 可是&#xff0c;在部署的过程中&#xff0c;却遇到了不少问题。 无法直接使用官网提供的docker-compose.yml&#xff0c;需…

ATA-3080C功率放大器在电解液体浸润性测试中的应用

现在的电子设备上的供电电池多为可反复充放电的锂电池&#xff0c;这种在我们日常生活中扮演着重要角色的电池&#xff0c;却有着自燃、爆炸的风险&#xff1b;随着电池在生活中的普及&#xff0c;电池检测相关行业和领域也随之发展。那么功率放大器在电解液体浸润性测试中有什…

Stack详解(含动画演示)

目录 Stack详解1、栈数据结构动画演示2、Stack的继承体系3、Stack的push (入栈)方法4、Stack的pop (出栈)方法5、Stack是如何利用Vector实现栈数据结构的&#xff1f;6、自己实现栈(不借助JDK提供的集合)7、自己实现栈(借助JDK提供的集合)利用 ArrayDeque 实现高性能的非线程安…

深入理解 Vue Router 及其 `router` 和 `route` 变量

深入理解 Vue Router 及其 router 和 route 变量 在使用 Vue.js 进行单页面应用开发时&#xff0c;Vue Router 是一个不可或缺的工具。它使得我们可以轻松地管理应用中的路由&#xff0c;提供了流畅的用户体验。然而&#xff0c;在实际开发中&#xff0c;许多开发者可能会混淆…

在自己的电脑上搭建我的世界Java版服务器

很多朋友&#xff0c;喜欢玩Minecraft&#xff0c;也希望搭建一个服务器&#xff0c;用于和小伙伴联机&#xff1b; 并且&#xff0c;拥有服务器后&#xff0c;即使所有玩家都下线&#xff0c;“世界”依旧在运行&#xff0c;玩家可以随时参与其中&#xff0c;说不定一上线&am…

2. 音视频H264

视频软件基本流程 1.什么是H264 H.264是由ITU-T视频编码专家组&#xff08;VCEG&#xff09;和ISO/IEC动态图像专家组&#xff08;MPEG&#xff09;联合组成的联合视频组&#xff08;JVT&#xff0c;Joint Video Team&#xff09;提出的高度压缩数字视频编解码器标准 H265又名高…

我国含氢硅油产量逐渐增长 市场集中度较高

我国含氢硅油产量逐渐增长 市场集中度较高 含氢硅油又称为烷基硅油&#xff0c;是一种有机硅化合物&#xff0c;在常温常压下多表现为一种无色透明液体。与其他类型的硅油相比&#xff0c;含氢硅油具有良好的滋润性、疏水性、润滑性、化学稳定性等优点。经过多年发展&#xff…

【C语言】10.C语言指针(5)

文章目录 1.sizeof和strlen的对比1.1 sizeof1.2 strlen1.3 sizeof 和 strlen的对⽐ 2.数组和指针笔试题解析2.1 ⼀维数组2.2 字符数组2.3 ⼆维数组 3.指针运算笔试题解析3.1 题⽬13.2 题⽬23.3 题⽬33.4 题⽬43.5 题⽬53.6 题⽬63.7 题⽬7 1.sizeof和strlen的对比 1.1 sizeof …

正则表达式:从左到右一个个去匹配,api帮助文档搜:Pattern

正则匹配字符&#xff1a; \:在java里面是转义字符的意思&#xff0c;在java里面可以理解为&#xff1a;\\\ “你”匹配一个&#xff1a;. a匹配一个&#xff1a;. 匹配多个的情况&#xff1a; 正则表达式练习&#xff1a; 忽略大小写的书写方式&#xff1a;(?i) 正则表达式在…

【仿真建模-anylogic】Dynamic Event原理解析

Author&#xff1a;赵志乾 Date&#xff1a;2024-06-12 Declaration&#xff1a;All Right Reserved&#xff01;&#xff01;&#xff01; 1. 类图 2. 原理解析 EventOriginator是Anylogic中各类事件的父类&#xff0c;对外暴露的接口主要有: 函数功能boolean isActive()判定…