【Java数据结构重点知识】第三节:认识包装类和泛型

目录

一:包装类

1.什么是包装类

2.装箱和拆箱

3.一个经典面试题

二:泛型

1.什么是泛型

2.语法

3.使用

4.泛型是如何编译的

5.泛型的上界


一:包装类

1.什么是包装类

(1)概念:在Java中,由于基本类型不是继承自Object。为了在泛型代码中可以支持基本类型,Java给每个基本类型都对应了一个类

(2)基本数据类型分别对应的包装类

基本数据类型包装类
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean

2.装箱和拆箱

(1)装箱:把一个基本数据类型转化为包装类型的过程

(2)拆箱:把一个包装类型转化为结拜呢数据类型的过程

(3)自动装箱和显示装箱

(4)自动拆箱和显示拆箱

3.一个经典面试题

(1)每个包装类对象都封装了基本类型的一个值,在-128到127之间会缓存起来,比较的是缓存起来的值,在此之外的范围,是比较的对象(因为会new新的出来)

 (2)在包装类中推荐用equals来比较值的大小;如果使用“==”比较时是不同的(对于基本类型来说,比较的是值;而对于引用数据类型来说,比较的是对象的内存地址)

二:泛型

1.什么是泛型

(1)简单来说,就是适用于许多类型;代码方面来说,就是对类型实现参数化

(2)泛型目的:就是指定当前容器,需要持有什么类型的对象,让编译器去做检查,这时,就可以把类型进行参数传递,需要什么类型,就传什么类型

2.语法

(1)定义一个泛型类

class 泛型类名 <类型参数列表  [extends 继承类]>{

        //这里可以使用类型参数

}

(2)定义一个泛型引用

泛型类 <类型实参>  变量名;

(3)定义一个泛型对象

new 泛型类 <类型实参>  {构造方法实参}};

(4)定义一个泛型方法

方法限定符 <类型参数列表 >  返回值类型 方法名称<形参列表>{

}

3.使用

(1)不能实例化一个泛型数组

(2)<T>代表当前类是一个泛型类

(3)泛型优点:数据类型参数化,编译是自动进行类型检查和转化

4.泛型是如何编译的

        擦除机制:在编译时,将所有的T擦除为Object.

5.泛型的上界

(1)语法:

class 泛型类名称 <类型参数 extends 类型边界>{

}

(2)例子:

E是number或者number的子类。

String 不是number的子类型所以报错

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

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

相关文章

YOLOv7优化:独家创新(SC_C_Detect)检测头结构创新,实现涨点 | 检测头新颖创新系列

💡💡💡本文独家改进:独家创新(SC_C_Detect)检测头结构创新,适合科研创新度十足,强烈推荐 SC_C_Detect | 亲测在多个数据集能够实现大幅涨点 收录: YOLOv7高阶自研专栏介绍: http://t.csdnimg.cn/tYI0c ✨✨✨前沿最新计算机顶会复现 🚀🚀🚀YOLOv7自研…

找质数(枚举 埃氏筛 线性筛)

输入一个数&#xff0c;返回小于等于这个数的质数。 枚举法&#xff1a; public static int countPrimes(int n) {int cnt0;for(int i2;i<n;i) {if(prime(i))cnt;}return cnt;}private static boolean prime(int x) {for(int i2;i*i<x;i){if(x%i0)return false;}return …

多进程间通信学习之信号通信

进程对信号的处理方式&#xff1a;1、忽略&#xff1b;2、默认&#xff1b;3、捕捉&#xff1b;发送信号的三种情形&#xff1a;1、操作系统给进程发送信号&#xff1b;2、用户给进程发送信号&#xff1b;3、一个进程给另一个进程发送信号&#xff1b;信号的本质&#xff1a;1、…

JWT的头部、载荷和签名分别包含哪些信息?

JWT&#xff08;JSON Web Token&#xff09;由三部分组成&#xff1a;头部&#xff08;Header&#xff09;、载荷&#xff08;Payload&#xff09;和签名&#xff08;Signature&#xff09;。每个部分都是经过Base64编码的JSON字符串。 1&#xff1a;头部&#xff08;Header&a…

正点原子嵌入式linux驱动开发——Linux CAN驱动

CAN是目前应用非常广泛的现场总线之一&#xff0c;主要应用于汽车电子和工业领域&#xff0c;尤其是汽车领域&#xff0c;汽车上大量的传感器与模块都是通过CAN总线连接起来的。CAN总线目前是自动化领域发展的热点技术之一&#xff0c;由于其高可靠性&#xff0c;CAN总线目前广…

java进行支付宝支付(沙箱环境)

目录 1.准备工作 2.idea配置文件准备 3.后端代码编写 接口1&#xff1a;支付订单 接口2&#xff1a;查询订单 接口3&#xff1a;订单退款 接口4&#xff1a;查询退款结果 接口5&#xff1a;获取总账单 接口6&#xff1a;取消订单 接口7&#xff1a;回调接口 定时任务…

P4345 [SHOI2015] 超能粒子炮·改 题解---------Lucas定理

题面&#xff1a; 题目 题意概括&#xff1a; T T T 次询问&#xff0c;每次给出 n , k n,k n,k&#xff0c;求 ∑ i 0 k C n i % 2333 \sum_{i 0}^{k} C_{n}^{i} \ \% \ 2333 ∑i0k​Cni​ % 2333。 1 ≤ T ≤ 1 0 5 &#xff0c; 1 ≤ n , k ≤ 1 0 18 1\leq T \leq10^5…

docker环境安装+maven依赖继承问题

1&#xff0c;docker环境安装 我们使用yum指令进行安装&#xff0c;分别cmd运行&#xff1a; yum install -y yum-utils device-mapper-persistent-data lvm2 yum-contig-manager --add-repo https://download.docker.com/linux/centos/docker-ce.rep具体解释如下&#xff1a;…

Android 事件分发面试题

序、慢慢来才是最快的方法。 Android 2020年面试系列&#xff08;02 — View事件分发&#xff09;_view事件分发 2020-CSDN博客 1. Touch事件如何从屏幕到我们的App。 硬件与内核部分 当我们触摸屏幕或者按键操作时&#xff0c;首先触发的是硬件驱动 驱动收到事件后&#xf…

如何创建 SpringBoot 多模块项目

1. 创建父模块 【添加依赖】 【删除父模块资源】 父模块只需要保留 pom.xml&#xff0c;其他文件的全部删除&#xff08;包括 src&#xff09; 2. 创建子模块 3. 修改父模块 3.1 删除不必要的依赖 3.2 添加打包类型 3.3 添加所有子模块 声明子模块有两个好处&#xff1a; …

Pytorch 注意力机制解析与代码实现

什么是注意力机制 注意力机制是深度学习常用的一个小技巧&#xff0c;它有多种多样的实现形式&#xff0c;尽管实现方式多样&#xff0c;但是每一种注意力机制的实现的核心都是类似的&#xff0c;就是注意力。 注意力机制的核心重点就是让网络关注到它更需要关注的地方。 当…

什么是 CNN? 卷积神经网络? 怎么用 CNN 进行分类?(3)

参考视频&#xff1a;https://www.youtube.com/watch?vE5Z7FQp7AQQ&listPLuhqtP7jdD8CD6rOWy20INGM44kULvrHu 视频7&#xff1a;CNN 的全局架构 卷积层除了做卷积操作外&#xff0c;还要加上 bias &#xff0c;再经过非线性的函数&#xff0c;这么做的原因是 “scaled p…

电压放大器在压电陶瓷致动器中的应用有哪些

电压放大器在压电陶瓷致动器中有多种应用。压电陶瓷致动器是一种能够将电能转化为机械能的装置&#xff0c;通过施加电压来使陶瓷材料发生形变或振动。它在许多领域中得到广泛应用&#xff0c;如精密定位、振动控制、压力控制等。下面安泰电子将详细介绍电压放大器在压电陶瓷致…

java修仙基石篇->instanceof子父类检查

instanceof检查子父类&#xff08;或者是否能被强转&#xff09; 作用1&#xff1a;检查某对象是否是某类的子类 如&#xff1a;儿子类继承了父亲类。 检查儿子类对象是否属于父亲类 作用2&#xff1a;检查两个对象是否可以强转 语法&#xff1a; 子类对象 instanceof 父…

物联网智慧种植农业大棚系统

物联网智慧种植农业大棚系统 项目背景 智慧农业是是将物联网技术和农业生产箱管理的新型农业&#xff0c;依托部署在农业生产现场的各种传感节点&#xff0c;以物联网网关为通道形成数据传输网络&#xff0c;可以实现控制柜、环境监测传感器、气象监测机器等设备的远程监控&a…

【开题报告】基于SpringBoot的医美在线预约系统的设计与实现

1.研究背景 医美行业是指结合医学和美容技术&#xff0c;为人们提供外貌改善和整容手术等服务的领域。随着社会经济的发展和人们审美观念的变化&#xff0c;医美行业得到了快速的发展&#xff0c;并受到越来越多人的关注和需求。 传统的医美预约方式主要依赖于电话预约或现场…

大数据之LibrA数据库系统告警处理(ALM-12006 节点故障)

告警解释 Controller按30秒周期检测NodeAgent状态。当Controller连续三次未接收到某个NodeAgent的状态报告时&#xff0c;产生该告警。 当Controller可以正常接收时&#xff0c;告警恢复。 告警属性 告警ID 告警级别 可自动清除 12006 严重 是 告警参数 参数名称 参…

【计算机网络】数据链路层——以太网

文章目录 前言什么是以太网以太网帧格式6位目的地址和源地址2位类型数据长度CRC 校验和 数据在数据链路层是如何转发的 前言 前面我们学习了关于应用层——自定义协议、传输层——UDP、TCP协议、网络层——IP协议&#xff0c;今天我将为大家分享关于数据链路层——以太网方面的…

C++ 如何快速确定新旧线程

在C中&#xff0c;您可以使用一些方法来快速区分是否当前代码正在主线程中执行还是在一个新线程中执行。以下是一些方法&#xff1a; std::this_thread::get_id()&#xff1a; 使用std::this_thread::get_id()可以获取当前线程的唯一标识符。您可以将主线程的ID与新线程的ID进行…

C语言 DAY08 指针01

1.概述 地址编号&#xff1a;地址编号:就是计算机为了存储数据,每一个程序在32机中占4G,以一个字节为最小单位进行操作,每一个字节都有其对应的地址,该地址就是地址编。 指针&#xff1a;地址编号的数据类型 指针变量&#xff1a;存储地址编号的变量,其数据类型为指针 在32位…