Java 有哪些数据存储方式?
基本数据类型 (1byte3 整 2 小 1 字符 1 布尔) 分别是 byte,short,int long,flort,double,char,boolean
String
自定义封装类(PO,VO 等实体类)
数组, 存储一组数据, 可以是基本数据类型, 也可以是引用数据类型, 但只能是同一类型, 并且大小一定
集合类, 作用与数组类似, 也可以存储一组数据, 也称作容器类
为什么出现集合类? 集合类与数组的区别是什么?
数组的特点:
一个数组只能存储同一种数据类型的数据
数组长度不可变, 定义数组时必须定义长度
数组的存储方式只有一种, 需要通过游标定位, 游标从 0 开始, 不能访问范围外的游标
集合类的特点:
一个集合类可以存储多种数据类型的数据(对象一旦被放入集合类中, 集合类都会把它当作是 Object 类型处理, 这也是集合类可以存储多种数据类型的数据的原因)
集合类的长度可变
每种集合类的存储方式各不相同, 可根据实际情况选用适当的集合类
集合类提供了一些排序比较等方法, 方便我们使用
JAVA 体系中的集合类有什么?
从图中我们可以得到什么信息呢? 该图说明, 红色的是常用的集合实现类, 主要是分为 2 个接口 Collection Map, 分类的依据是 2 者的存储方式不同
Collection 是孤立元素的对象集合, 一次存一个元素, 属于单列集合
Map 是成对元素的对象集合(键值对), 一次存一对元素, 属于双列集合
什么是泛型?
我们对集合类进行编译时, 编译器会出现警告(黄色感叹号), 集合类之所以可以存储不同类型的数据, 是因为对象一旦被放进集合后, 集合类都会把它当作是 Object 类型处理这样做会带来两个问题:
每次取出集合元素, 都要进行强制类型转换, 不仅代码臃肿, 而且增加了编程的复杂度
集合对元素类型没有任何限制, 假如只想创建一个 Dog 对象的集合, 但是程序可以轻易把一个 Cat 对象放入集合中, 那在取出集合元素时, 如果将一个 Cat 类型的对象强制转换为 Dog 类型, 就会引起 ClassCastException 异常
泛型如何解决问题?
定义了泛型之后, 容器中就只能存放对应泛型的数据类型
使得集合类记住集合元素的数据类型, 保证程序在编译时没有警告, 运行时没有 ClassCastException 异常
JAVA 集合类(上)
来源: http://www.bubuko.com/infodetail-2527649.html