搜公众号
推荐 原创 视频 Java开发 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库
Lambda在线 > 达内直播课 > Java中的数组、集合和泛型

Java中的数组、集合和泛型

达内直播课 2018-06-02
举报
今日摘要

又到和大家分享的时刻java知识啦,哈哈!本期分享数组、集合和泛型。老套路从基础入手走起。。。

一、概念


数组:一组相同类型数据的集合,数组中的元素可以是任意类型(包括基本类型和引用类型)

集合:一组能够存储和操作元素固定的数据,集中的元素不能存放基本数据类型,只能存对象的引用。但是在JDK1.5以后的版本当中,java增加了“自动装箱”和“自动拆箱”的机制,JVM会把基本类型数据包装成对应的包装类再存入集合,看起来集合能够存入基本数据类型,其实是不能的只是多了一个包装数据的过程。

泛型:泛型==参数化类型。JDK1.5后的一项新特性,它的本质是参数化类型的应用,也就是说所操作的数据类型被 指定为一个参数,在用到的时候在指定具体的类型。


二、进化史

Java中的数组、集合和泛型


 开始用内存中的一个位置映射一个值,用“变量”来使用这个值。进一步发展成,用变量来引用一组值,数组诞生。后来有了集合,它是更强的数组,依赖object类。存入集合要经历装箱,转换成object类,拿出的时候再拆箱成之前的类型。在元素量大的时候,会导致性能下降。由于我们使用同一类型更方便操作,后来就产生了泛型,它可以把里面的元素转换成特定的类型,减少了拆装箱带来的困扰。


三、对比

Java中的数组、集合和泛型

四、案例


 我们知道接口、类和方法也都可以使用泛型去定义,以及相应的使用。是的,在具体使用时,可以分为泛型接口、泛型类和泛型方法。如下,我们看一个最简单的泛型类和方法定义:


Java中的数组、集合和泛型

运行:


Java中的数组、集合和泛型

在泛型接口、泛型类和泛型方法的定义过程中,我们常见的如T、E、K、V等形式的参数常用于表示泛型形参,由于接收来自外部使用时候传入的类型实参。那么对于不同传入的类型实参,生成的相应对象实例的类型是不是一样的呢?

Java中的数组、集合和泛型

运行:


以上我们发现,在使用泛型类时,虽然传入了不同的泛型实参,但并没有真正意义上生成不同的类型,传入不同泛型实参的泛型类在内存上只有一个,即还是原来的最基本的类型(本实例中为Box),当然,在逻辑上我们可以理解成多个不同的泛型类型。

 究其原因,在于Java中的泛型这一概念提出的目的,导致其只是作用于代码编译阶段,在编译过程中,对于正确检验泛型结果后,会将泛型的相关信息擦出,也就是说,成功编译过后的class文件中是不包含任何泛型信息的。泛型信息不会进入到运行时阶段。

 对此总结成一句话:泛型类型在逻辑上看以看成是多个不同的类型,实际上都是相同的基本类型。


五、总结


 无论是变量、数组、集合、泛型都是一个容器,能盛放数据,只是“瓶口”不太一样。从盛放一个数据,同种类型的多个数我居,到不同种类的多个数据,容器的发展更加人性化,人类面向对象的思想也在不断的提高。相信未来在学习JAVA的时候,对容器的理解会更加的深入。



版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《Java中的数组、集合和泛型》的版权归原作者「达内直播课」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

举报