初始泛型【超级详细哦~】

初始泛型【超级详细哦~】

  • 1、包装类
    • 1.1 基本数据类型和对应的包装类
    • 1.2 装箱和拆箱
    • 1.3 自动装箱和拆箱
  • 2、泛型
    • 2.1 什么是泛型
    • 2.2 泛型的语法
    • 2.3泛型的使用
    • 2.4 泛型的上界
      • 2.4.1 语法
      • 2.4.2 示例

1、包装类

1.1 基本数据类型和对应的包装类

在这里插入图片描述

1.2 装箱和拆箱

        int i=10;//装箱操作,新建一个Integer类型对象,手动将i的值放入对象的某个属性中Integer ii=Integer.valueOf(i);//拆箱操作,将Integer对象中的值取出,放到一个基础类型中int j=ii.intValue();

1.3 自动装箱和拆箱

       //自动装箱Integer i1=10;//自动拆箱int i2=i1;

2、泛型

2.1 什么是泛型

泛型:就是适用于许多许多类型。
使用泛型可以通过自动装箱储存Integer等对象,
不仅能储存基本类型,还能储存复杂对象,这样为程序提供了更大的通用性。

使用泛型较数组的好处

  • int[ ]… : 之前我们就学过数组,只能创建静态数组,只提供基本的访问和遍历操作。你需要手动输入更多复杂的操作,如增删查改。
  • List< Integer >… :使用泛型时,不仅可以创建动态数组,装箱后还提供了很多复杂的操作,如:List的增删查改方法。

2.2 泛型的语法

class 泛型类名称 <类型形参列表>{//这里可以使用类型参数
}

下面举一个简单的例子:

class demo<T>{public Object[] arr=new Object[10];//所有类的父类是Object
}

2.3泛型的使用

在这里插入图片描述

如果上述案例我不想使用(T)强制性转化应该如何书写代码?

在这里插入图片描述

在这里插入图片描述

2.4 泛型的上界

在定义泛型类时,有时需要对传入的类型变量做一定的约束,可以通过类型边界来约束。

2.4.1 语法

class 泛型类名称<类型形参 extend 类型边界>{
}

2.4.2 示例

在这里插入图片描述
关于泛型的内容已经叙述完毕,该文章使用过的代码我放下面了,有需要的可以选择查看~

class demo<T>{public Object[] arr=new Object[10];public T getArr(int pos) {return (T)arr[pos];}public void setArr(int pos,T val) {this.arr[pos] = val;}
}
class demo0<E extends Number>{public Object[] arr=new Object[10];public E getArr(int pos) {return (E)arr[pos];}public void setArr(int pos,E val) {this.arr[pos] = val;}
}
public class Main {public static<E> void main(String[] args) {demo0<Integer> arr=new demo0<>();//demo0<String> arr1=new demo0<String>();}public static<T> void main5(String[] args) {demo<String> arr=new demo<>();arr.setArr(0,"哈哈哈哈");System.out.println(arr.getArr(0));}public static <T> void main4(String[] args) {demo<Integer> arr=new demo<>();arr.setArr(0, 100 );System.out.println(arr.getArr(0));}public static void main3(String[] args) {int[] arr1={1,2,3,4,5,6};char[] arr2={'a','b','c','d','e'};}public static void main2(String[] args) {//自动装箱Integer i1=10;//自动拆箱int i2=i1;System.out.println(i1);System.out.println(i2);}public static void main1(String[] args) {int i=10;//装箱操作,新建一个Integer类型对象,手动将i的值放入对象的某个属性中Integer ii=Integer.valueOf(i);//拆箱操作,将Integer对象中的值取出,放到一个基础类型中int j=ii.intValue();System.out.println(i);System.out.println(ii);System.out.println(j);}
}

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

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

相关文章

PCL 点云圆柱邻域搜索

目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.2完整代码 三、实现效果 PCL点云算法汇总及实战案例汇总的目录地址链接&#xff1a; PCL点云算法与项目实战案例汇总&#xff08;长期更新&#xff09; 一、概述 本文将介绍如何使用PCL库进…

【白皮书下载】分布式功能安全的创新与突破

近日&#xff0c;Imagination 推出全新性能最高且具有高等级功能安全性的汽车 GPU IP——Imagination DXS GPU&#xff0c;并且是Imagination 第一款带有“分布式安全机制”的处理器。 下载白皮书&#xff0c;获取完整分布式安全机制解决方案 根据 ISO 26262 汽车安全完整性等级…

11.1图像的腐蚀和膨胀

基本概念-图像腐蚀 图像腐蚀是一种用于去除图像中小的对象或者突出物体边缘的形态学操作。 图像腐蚀&#xff08;erosion&#xff09;的基本概念 图像腐蚀通常用于二值图像&#xff0c;其基本原理是从图像中“侵蚀”掉一些像素点&#xff0c;这些像素点通常是边界上的或者是孤…

【有啥问啥】OpenAI o1的思考之前训练扩展定律、后训练扩展定律与推理扩展定律:原理与应用详解

OpenAI o1的思考之前训练扩展定律、后训练扩展定律与推理扩展定律&#xff1a;原理与应用详解 随着深度学习技术的不断发展&#xff0c;模型的规模和复杂度也迅速提升。研究人员发现了模型训练和推理过程中性能变化的规律&#xff0c;这些规律为我们提供了优化模型设计与训练的…

BGP 路由反射器

转载&#xff1a;BGP 路由反射器 / 实验介绍: / 原理概述 缺省情况下&#xff0c;路由器从它的一个 IBGP 对等体那里接收到的路由条目不会被该路由器再传递给其他IBGP对等体&#xff0c;这个原则称为BGP水平分割 原则&#xff0c;该原则的根本作用是防止 AS 内部的 BGP 路由…

linux入门——“linux基本指令”下

1.mv指令 mv指令用于移动文件或者目录。语法是mv 源文件 目标文件。它的用法需要注意&#xff1a; 当目标文件不存在的时候&#xff0c;默认是将源文件进行重命名操作&#xff0c;名字就是目标文件的名字&#xff0c;当目标文件存在的时候才会把源文件移动到目标文件。 目标文…

微服务远程调用(nacos及OpenFeign简单使用)

问题&#xff1a;在微服务中&#xff0c;每个项目是隔离开的&#xff0c;当有一个项目请求其他项目中的数据时&#xff0c;必须发起网络请求&#xff0c;本文即对此问题展开讨论。 1.使用restTemplate发送请求 //发送请求ResponseEntity<List<ItemDTO>> response …

Microsoft 365 Copilot: Wave 2 发布,开启AI时代下的全新工作流

本周一&#xff08;9月16日&#xff09;&#xff0c;微软对 Microsoft 365 Copilot 办公辅助工具进行了重大升级&#xff0c;推出 Wave 2 版本。新版 Copilot 将为 Microsoft 365 用户带来一系列新功能和改进&#xff0c;进一步提升工作效率与用户体验&#xff0c;正式开启AI时…

【machine learning-13-线性回归的向量化】

向量化 向量化简洁并行计算 向量化 线性回归的向量化表示如下&#xff0c;其中w 和 x 都分别加了箭头表示这是个向量&#xff0c;后续不加也可以表示为向量&#xff0c;w和x点乘加上b&#xff0c;就构成了多元线性回归的表达方式&#xff0c;如下&#xff1a; 那么究竟为什么…

uniapp|微信小程序 实现输入四位数 空格隔开

<template><page-meta :page-style"cssVar"></page-meta><view class"container"><u-navbartitle"优惠券兑换"placeholderbgColor"#fff":autoBack"true":titleStyle"{fontFamily: SourceHa…

navicat无法连接远程mysql数据库1130报错的解决方法

出现报错&#xff1a;1130 - Host ipaddress is not allowed to connect to this MySQL serve navicat&#xff0c;当前ip不允许连接到这个MySQL服务 解决当前ip无法连接远程mysql的方法 1. 查看mysql端口&#xff0c;并在服务器安全组中放开相应入方向端口后重启服务器 sud…

MySQL篇(存储引擎 - InnoDB存储引擎架构)(持续更新迭代)

目录 一、逻辑存储结构 1. 表空间 2. 段 3. 区 4. 页 5. 行 二、架构 1. 简介 2. 内存结构&#xff08;四部分&#xff09; Buffer Pool Change Buffer Adaptive Hash Index Log Buffer 3. 磁盘结构&#xff08;七部分&#xff09; System Tablespace File-Per-…

【工具变量】科技金融试点城市DID数据集(2000-2023年)

时间跨度&#xff1a;2000-2023年数据范围&#xff1a;286个地级市包含指标&#xff1a; year city treat post DID&#xff08;treat*post&#xff09; 样例数据&#xff1a; 包含内容&#xff1a; 全部内容下载链接&#xff1a; 参考文献-pdf格式&#xff1a;https://…

大觅网之环境部署(Environment Deployment of Da Mi Network)

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…

World of Warcraft [CLASSIC] International translation bug

internationalization i18n_getinternationalizationjs-CSDN博客 1&#xff09;国际化翻译不完整 Chance on melee and ranged critical strike to increase your attack power by 1262 for 10s. 2&#xff09;更新美酒节&#xff0c;服务器并发太高&#xff0c;被提出副本 Wo…

[Redis][String][下]详细讲解

目录 1.其他命令1.APPEND2.GETRANGE3.SETRANGE4.STRLEN 2.内部编码3.典型使用场景1.缓存(Cache)功能2.计数(Counter)功能3.共享会话(Session) 1.其他命令 1.APPEND 功能&#xff1a; 如果key已经存在并且是⼀个string&#xff0c;命令会将value追加到原有string的后边如果key…

第二十节:学习Redis缓存数据库实现增删改查(自学Spring boot 3.x的第五天)

这节记录下如何使用redis缓存数据库。 第一步&#xff1a; 先在服务器端安装redis&#xff0c; 下载地址&#xff1a;Releases tporadowski/redis GitHub。 第二步&#xff1a; 安装redis客户端可视化管理软件redisDesktopmanager Redis Desktop Manager - Download 第…

11. DPO 微调示例:根据人类偏好优化LLM大语言模型

在部署大模型之后&#xff0c;我们必然要和微调打交道。现在大模型的微调有非常多的方法&#xff0c;过去的文章中提到的微调方法通常依赖于问题和答案对&#xff0c;标注成本较高。 2023 年所提出的 Direct Preference Optimization&#xff08;DPO&#xff09;为我们提供了一…

C++——map和set的使用以及map系列

目录 map和set的使用 1. 序列式容器和关联式容器 2. set系列的使⽤ 2.1 set和multiset参考⽂档 2.2 set类的介绍 2.3 set的构造和迭代器 2.4 set的增删查 set的增删查关注以下⼏个接⼝即可&#xff1a; 2.6 find和erase使⽤样例&#xff1a; lower_bound(); upper_bo…

Python 从入门到实战23(属性property)

我们的目标是&#xff1a;通过这一套资料学习下来&#xff0c;通过熟练掌握python基础&#xff0c;然后结合经典实例、实践相结合&#xff0c;使我们完全掌握python&#xff0c;并做到独立完成项目开发的能力。 上篇文章我们讨论了类的定义、使用方法的相关知识。今天我们将学…