一,昨日回顾
1)Collection集合遍历方式目前有几种方式?
两种:
public Object[] toArray() —>遍历Object[]数组 (传统方式遍历)
迭代器遍历
public Iterator iterator()
2)数组和集合的区别?
1)长度的区别
集合长度是可变的,
数组长度是固定的
2)存储数据类型的区别
集合只能存储引用类型
数组既可以存储基本类型的数据,也可以引用类型
3)存储元素
集合可以存储多种类型的元素 ,即使以后加入了泛型,那么可以通过反射技术添加其他类型
数组只能存储同一种类型的元素
集合:
ArrayList array = new ArrayList() ;
array.add(10);
array.add(20) ;
…
array.add(“hello”); 报错了,编译通过 ,但是通过反射技术添加
3)集合迭代器遍历格式?代码体现
固定的写法
Iterator it = 集合对象.iterator() ;
while(it.hasNext()){
//Obejct obj = it.next() ;
//字符串类型
String s = (String)(it.next()) ;
System.out.println(obj) ;
}
4)Integer i = new Integer(100) ;
i+= 200 ; 做了哪些事情? JDK5新特性,自动拆装箱!
自动拆装箱
i += 200 ;---->自动拆箱:将Integer类型---->int类型, 跟200做计算,计算完毕,
将结果在装箱为 Integer类型
A)其他常用类
Date类
Date日期格式和日期文本格式的相互转换!
Date------>String格式 :格式化操作
Date date = new Date() ;java.util.Date;
//创建SimpleDateFormat对象
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd”) ;
String s = sdf.format(date) ;
System.out.println(s) ;
String----->Date :解析操作
String source = “2020年01月16日”
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy年MM月dd日”) ;
Date d = sdf.parse(source) ;
System.out.println(d)
获取随机数:
int num = (int)(Math.random()*100 +1)
Random类:
Random r = new Random() ;
int n = r.nextInt(100)+1 ; [0,100]
集合: Collection 单例集合体系
List Set
ArrayList,LinkedList,Vector HashSet,TreeSet
Collection集合:
专有遍历方式 :迭代器 Iterator
二,今日内容
为什么存在泛型? 频繁在集合中使用的
定义一个数组:int类型的数组
int[] arr = {11,22,33,44,55} ;
数字在定义的时候,将数组中存储的数据类型就已经限定了,不能存储该类型以外的元素!
由于集合添加元素的时候,可以添加任意类型元素,在开发中,有时候需要指定存储的类型,集合存在一个技术就和数组一样,
在创建对象的时候,就将数据类型限定了---->泛型
格式:
<数据类型> 注意:只能是引用数据类型
泛型的特点:
1)解决了创建集合以及使用集合对象的时候的黄色警告线的问题
2)将运行期时期异常提前了编译时期 (提高了程序的安全性)
3)避免了强制类型转换
//泛型的应用场景:在集合中使用居多!
//早期没有泛型概念,程序员在使用强制类型转换,经常会出现:ClassCastException:类转换异常
泛型的高级通配符(了解,以后在看源码能看的懂即可,知道定义格式的意思)