泛型和包装类

2023-11-07

1.泛型

1.1泛型的定义

泛型是程序设计语言的一种特性。允许程序员在强类型程序设计语言中编写代码时定义一些可变部分,那些部分在使用前必须作出指明。各种程序设计语言和其编译器、运行环境对泛型的支持均不一样。将类型参数化以达到代码复用提高软件开发工作效率的一种数据类型。泛型类是引用类型,是堆对象,主要是引入了类型参数这个概念。

// 1. 尖括号 <> 是泛型的标志
// 2. E 是类型变量(Type Variable),变量名一般要大写 
// 3. E 在定义时是形参,代表的意思是 MyArrayList 最终传入的类型,但现在还不知道
 public class MyArrayList<E> {
  	private E[] array;
   	private int size;
    ...
 }

1.2泛型类的使用

// 定义了一个元素是 Book 引用的 MyArrayList
 MyArrayList<Book> books = new MyArrayList<Book>();
  books.add(new Book());
   // 会产生编译错误,Person 类型无法转换为 Book 类型
    books.add(new Person());
   // 不需要做类型转换
    Book book = book.get(0);
    // 不需要做类型转换
    // 会产生编译错误,Book 类型无法转换为 Person 类型
    Person person = book.get(0);

通过以上代码,我们可以看到泛型类的一个使用方式:只需要在所有类型后边跟尖括号,并且尖括号内是真正的类
型,即 E 可以看作的最后的类型。
Book 只能想象成 E 的类型,但实际上 E 的类型还是 Object。

1.3泛型的总结

  1. 泛型是为了解决某些容器、算法等代码的通用性而引入,并且能在编译期间做类型检查。
  2. 泛型利用的是 Object 是所有类的祖先类,并且父类的引用可以指向子类对象的特定而工作。
  3. 泛型是一种编译期间的机制,即 MyArrayList 和 MyArrayList 在运行期间是一个类型。
  4. 泛型是 java 中的一种合法语法,标志就是尖括号 <>

2.包装类

2.1 基本数据类型和包装类直接的对应关系

基本数据类型 包装类
byte Byte
int Integer
short Short
long Long
float Float
double Double
char Character
boolean Boolean

2.2 包装类的使用,装箱(boxing)和拆箱(unboxing)

 		Integer i = 10;//自动装箱-->Integer.valueOf
        int a = i;//自动拆箱 intValue
        int a = 10;
        Integer i = Integer.valueOf(a);
        Integer integer = new Integer(a);
        int b = integer.intValue();
        double c = integer.doubleValue();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

泛型和包装类 的相关文章

  • 一文说尽用Python赚钱的五种方法!

    Python是一种非常流行的编程语言 因此Python开发人员可以从众多工作选择中进行选择 您可以学习Python 建立良好的产品组合并成为全职开发人员 也可以选择Python编码作为您的自由职业 我们仅介绍了使用Python赚钱的几种常见
  • 【安全狗】Linux后渗透常见后门驻留方式分析

    引言 当RedTeam拿下了一台服务器并获取到系统较高权限 但不知道服务器的凭证时 RedTeam会采用怎样的技术获取系统凭证呢 又或者 在RedTeam拿下一台服务器 为达到长久控制的目的而专门定制持久化后门 免杀肯定是必须的 的前提下
  • 一张图比較 Docker 和 Git:镜像管理设计理念

    Docker 的镜像管理设计中大量借鉴了 Git 的理念 以下这张图将对两者的核心概念和操作进行比較 有助于大家高速掌握管理 Docker 镜像的正确方式 微信订阅版本号 http mp weixin qq com s biz MzA5MT
  • 前端基础自查

    目录 h5和css3的认知 data v 03da18b4 http部分 前端HTTP优化 网页有哪些部分 服务器渲染 跨域 栅格式布局 阻止冒泡的方法 jq的认知 移动端的适配 不同尺寸屏幕 适配不同浏览器 大屏适配 设计稿 数组重复去重
  • laravel输出HTML内容

    blade模板引擎中的 xxx 表达式的返回值将被自动传递给 PHP 的 htmlentities 函数进行处理 以防止 XSS 攻击 如果需要展示未转义的数据 可以使用 xxx
  • 达梦学习进阶-DM8搭建主备切换

    达梦学习进阶 DM8搭建主备切换 达梦学习进阶 DM8搭建主备切换 随着学习深入 单机架构的达梦很少能满足生产环境的灾备要求 而且单机往往测试库用到的比较多 生产环境还是建议搭建主从或者集群 比较稳妥 所以知识储备还是要做好 今天就来冲击一
  • 论文笔记:Adaptive Graph Convolutional Recurrent Network for Traffic Forecasting

    NIPS 2020 1 abstract intro 当前的大多数深度学习方法基于共享参数设计模型 不同节点对应同一套参数 但是 由于每条道路的具体情况不一样 使用同一套参数无法捕捉细粒度的数据模式 gt 这篇论文设计了节点自适应参数学习
  • M62429L音量控制IC驱动

    前言 最近项目开发中 要控制AV端的音量 由于主控端的AV音量控制gpio被复用为其它功能口了 不得已增加一个ic去控制音量的输出 这里使用的是M62429L音量控制IC 1 M62429音量ic概述 M62429L是一款串行数据控制的双声
  • STM32CubeMx使用教程(四)——定时器中断

    前言 本节课将了解定时器的基本功能及其配置方法 还接触 stm32 中最重要的概念之一 中断 介绍在 cubeMX 中如何对中断进行设置 如何开启中断以及配置中断的优先级等 最后将实现由定时器触发的定时器中断 控制 LED 灯的闪烁 准备工
  • Scientific Toolworks Understand(代码分析软件) v5.1.1001免费版

    Scientific Toolworks Understand 代码分析软件 是一款支持多平台代码分析软件 使用这款Scientific Toolworks Understand 代码分析软件 可以让您根据不同的编译环境对代码进行整体编译
  • 在集群环境中安装R(步骤清晰内容详实,堪称无脑教程!)

    在集群环境下如何解决需要使用R语言的需求 关键词 PBS作业调度系统 HPC R 本文最初思路构思于2018 05 成文于2018 10 17 本文背景是博主的最新一篇论文 上位基因检测机器学习算法创新 临近实验尾声 已经完成在模拟数据中的
  • 【最优潮流】二阶锥松弛在配电网最优潮流计算中的应用(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 1 1 目标函数 1 2 约束条件 1 3 基于二阶锥松弛的模型转换 2 运行结果 2 1 算例分析 2
  • 大数据高频面试题-手写代码

    手写代码 2 1 快排 2 2 归并 2 3 手写Spark WordCount 2 4 冒泡排序 2 5 二分查找 2 6 二叉树之Scala实现 2 6 1 二叉树概念 2 6 2 二叉树的特点 2 6 3 二叉树的Scala代码实现
  • Jmeter的非GUI页面压测命令

    1 压测指令 jmeter bat n t 脚本文件绝对路径 脚本文件 jmx l 结果文件 jtl e o 生成测试报告绝对路径 注意 非GUI压测指令须在Jmeter的bin目录下执行 2 命令解析 n 命令行模式 t 指定jmx脚本地
  • 关于某日头条_signature参数逆向生成纯补环境

    主要是jsvmp里面 练习逆行中 函数的调用和补环境的手法 var window global var document document referrer var location href protocol https var navi
  • bash vim mode

    如果只想在bash中使用vi模式的Readline 在 bashrc 中添加 set o vi
  • 面试题 31:连续子数组的最大和(滴滴的“连续最大和”)

    刚才在笔滴滴的测试开发 编程题第一个就是求连续子数组的最大和问题 这个题在 剑指offer 也有这么一道题 题目描述如下 输入一个整型数组 数组里有正数也有负数 数组中一个或连续多个的多个整数组成一个子数组 求所有子数组的和的最大值 要求时
  • MyBatis学习(六):MyBatis的一对多关联如何操作

    上面一篇文章是关于MyBatis的一对一的关联如何操作 这一篇文章将主要讲述一对多 如何实现 首先还是在上面的一个class表 然后再构建一个student表 一个班级的学生会有很多 因此这就是所说的一对多 要实现的操作就是通过class的
  • K8s为什么需要calico? calico 原理深入理解.

    文章目录 为什么需要calico 网络插件 千千万 为何k8s要用calico calico的架构 calico Pod 跨node通信 tunl0 的作用 为什么所有pod的默认网关都是 169 254 1 1 什么是ARP 代理 jks
  • Springboot使用@Data注解,不用写get/set方法

    Springboot使用 Data注解 不用写get set方法 1 引入依赖

随机推荐

  • 关于项目跟进

    为什么写这个 因为之前自己同时在跟进几个项目 还在做新需求 没有忙过来 自己觉得自己项目那块没有抽出时间做好 所以列下看看哪些流程 是自己需要注意的 这都谈不上项目管理 只能说项目跟进 距离项目经理更是差得远 总之后面会补上这块的知识 激励
  • Ubuntu下安装VS Code以及C/C++插件(PS工作目录的创建)

    参考 Visual Studio Code Ubuntu下安装 以及C C 插件大全 作者 一只青木呀 发布时间 2020 08 05 11 55 53 网址 https blog csdn net weixin 45309916 arti
  • 8.ElasticSearch系列之索引模板与索引

    1 索引模板创建索引 可以通过kibana工具进行创建索引模板 也可以自定义语句 如创建poi索引模板 POST index template poi index patterns poi template settings index n
  • 【Spring】Spring依赖注入与控制反转理解

    Spring是一个庞大的框架 封装了很多成熟的功能 能够让我们无需重复造轮子 其次 它使用IOC进行依赖管理 利用JAVA的反射机制 将实例的初始化交给Spring Spring可以通过配置文件管理实例 我们就不用自己初始化实例啦 有人会问
  • 2021-01-13

    Jacinto 7处理器设备和子系统概述 上 本文概述TI下一代汽车处理器系列的主要架构特征和优势 这张幻灯片列出了Jacinto 7 SoC的不同方面 我将在后续章节中介绍这些内容 这里讨论的特性一般适用于Jacinto 7系列中的所有派
  • [学习日志]伤害生效由谁来决定?

    伤害生效由谁来决定 普通攻击 使用动画事件 用动画事件是最普遍的一种方式 假如我的伤害生效是在动画结束之后呢 攻击动画片段只有2秒时长 要在3秒才对敌方造成伤害 那么动画事件就做不到了 计时器 把伤害生效是点交给计时器去操作 攻击的时候开始
  • 网络拓扑的分类

    一 按网络所覆盖的地理范围分类 1 局域网 LAN 局域网Local Area Network 简称 LAN 是一种私有网络 一般在一座建筑物内或建筑物附近 比如家庭 办公室或工厂 局域网络被广泛用来连接个人计算机和消费类电子设备 通过网络
  • swift 之AVFoundation自定义相机界面拍照、录像、保存到相册、合成视频

    1 自定义相机拍照 自定义相机 1 前置和后置摄像头 typedef NS ENUM NSInteger AVCaptureDevicePosition AVCaptureDevicePositionUnspecified 0 AVCapt
  • CVPR 2020

    Editing in Style Uncovering the Local Semantics of GANs 作者 Edo Collins Sabine S sstrunk School of Computer and Communica
  • 笔试题目1

    腾讯笔试 2 假设函数f1的时间复杂度O n 那么f1 f1的时间复杂度为 A O n B O n n C O n log n D 以上都不对 这个题目我的思路是A 讨论后答案应该是D 因为f1的返回值不确定 如果是个数组当然复杂度就不同了
  • linux基础——vim及bash的使用

    vim vim介绍 vim是linux里的文本编辑工具 是vi的升级版的软件 是程序员文本编辑器 用来写程序的工具 安装 yum install vim y 用法 命令模式 yy 复制当前行 5yy 向下复制5行 copy dd 删除 剪切
  • 使用vue里面el-upload,照片反显后,然后再上传照片,发现上传的照片只要最新上传的,之前反显的照片没有了,解决办法如下

    第一步 首先先将照片反显存到两个数组里面如图 第二步 照片上传成功回调里面就在查看添加照片这个数组接着push 就可以了 切记先反显的时候把之前数据添加到里面
  • R Plot添加中文及其他字体【showtext】

    文章目录 前言 R Packages showtext 安装 简单示例 加载字体 更多详见 前言 之前 一个群里的群友 想要在它画的图上加入中文 保存为PDF之后 中文字符也不变成乱码 当时随手推荐了一个R package showtext
  • Linux的shell编程(四)

    六 bash程序的调试 在编程过程中难免会出错 有的时候 调试程序比编写程序花费的时间还要多 shell程序同样如此 shell程序的调试主要是利用bash命令解释程序的选择项 调用bash的形式是 bash 选择项shell程序文件名 几
  • Conda安装失败:Solving environment: failed with initial frozen solve. Retrying with flexible solve.

    Conda安装包安装包出现错误 比如 conda install imutils 出现如下错误 Collecting package metadata current repodata json done Solving environme
  • linux qt通过ps获取进程

    在linux 当中 通过qt 程序获取进程的名称 来对后续进行操作 QProcess m process m process start ps ef if m process waitForFinished const QByteArray
  • 按钮卡片特效代码集锦

    css最好看最全的按钮卡片样式 动画效果大全 纯css样式打造的20款按钮特效和11款卡片合集 喜欢的可以收藏 备开发时使用 按钮代码
  • 机器学习模型评估指标

    在机器学习建模过程中 针对不同的问题 需采用不同的模型评估指标 主要分为两大类 分类 回归 一 分类 1 混淆矩阵 2 准确率 Accuracy 3 错误率 Error rate 4 精确率 Precision 5 召回率 Recall 6
  • 【6】测试用例设计-输入域+输出域+异常分析+错误出错法

    目录 输入域测试 输出域测试 异常分析 错误猜测 输入域测试 极端测试如学生成绩0分 1分 2分 情况很少这种 特殊值如 99 0 99 长时间输入内存溢出 内存泄露 输出域测试 异常分析 异常操作验证系统容错性 出现错误时 故障恢复的能力
  • 泛型和包装类

    1 泛型 1 1泛型的定义 泛型是程序设计语言的一种特性 允许程序员在强类型程序设计语言中编写代码时定义一些可变部分 那些部分在使用前必须作出指明 各种程序设计语言和其编译器 运行环境对泛型的支持均不一样 将类型参数化以达到代码复用提高软件