初学javaDay17

泛型

泛型的由来
早期的Object类型可以接收任意的对象类型,但是在实际的使用中,会有类型转换的问题。也就存在这隐患,所以Java提供了泛型来解决这个安全问题
泛型的格式
<数据类型> :只能是引用数据类型
特点
1)将运行时期提前到了编译时期: 没有使用泛型之前,经常 ClassCastExceptino:类转换异常
2)避免了强制类型转换
3)提高了程序的安全性 (解决黄色警告线的问题)

早期的时候,使用Object代替任意类型(超类,父类) Object obj = new 任意类型() ;
向上转型的时候,多态的前提条件,一般不会出现异常;尤其向下转型的时候,程序不安全,类型不匹配,造成ClassCastException类转换异常
集合中使用泛型最多,如果不使用泛型,程序存在安全隐患!

泛型如果定义在接口上,对于接口的子实现类两种情况
1)已经确定档期子实现类中具体的数据类型
2)不确定子实现类中存储的类型

泛型通配符<?>
规则:前后保持一致的,任意类型,如果没有明确,那么就是Object以及任意的Java类了
<? extends E>:向下限定 E及其子类
<? super E>:向上限定 E及其父类

List集合

List集合的三个子实现类的特点
ArrayList
底层数据结构:可变数组的实现。
查询快,增删慢
从线程安全方面考虑:此实现不是同步的,线程不安全,执行效率高!
Vector
底层数据结构:对象数组
查询快,增删慢
线程安全角度考虑:Vector 是同步的,线程安全,执行效率低
LinkedList(特有功能:模拟栈结构的特点)
底层数据结构:链接列表实现
查询慢,增删快
线程安全角度考虑:此实现不是同步的,线程不安全,执行效率高

遍历集合的几种方式
1)Object[] toArray()
2)Collection迭代器:Iterator iteator()
3)普通for循环 size()/get(int index)
4)列表迭代器ListIterator listIterato()

Vector特有功能
public void addElement(Object obj): 给Vector集合添加元素 – 看成ArrayList 的add(Object obj)
public Object elementAt(int index) :通过角标获取元素 -->遍历集合普通for循环中的Object get(int index)
public Enumeration elements() :获取向量组件枚举接口 (获取遍历的生成器) ---->Iterator iterator() 迭代器

接口Enumeration功能
boolean hasMoreElements() :判断枚举接口中是否还有元素 —>看成hasNext()
Object nextElement():获取下一个元素 —>看成next()

LinkedList特有功能:
public void addFirst(Object Object):将元素添加到集合中的第一个位置
public addLast(Object Object):将元素添加到集合末尾
public Object getFirst():获取第一个元素
public Object getLast():获取最后一个元素
public Object Object removeFirst():删除第一个
public Object Object removeLast():删除最后一个

Jdk5以后的新特性

Jdk5以后的新特性:自动拆装箱,泛型,增强for循环,静态导入(导入的方法的级别),可变参数,枚举(后面)

增强for的引入,替代迭代器的!
格式:针对数组或者集合遍历
for(数据类型 变量名 : 数组对象或者集合对象){
输出变量名即可!
}
前提条件:
数组对象或者集合对象不能是null

静态导入(导入的方法的级别)
前提条件:
1)方法必须是静态的
2)如果一个类中的成员方法比较多,方法名和jdk提供的类中的方法名一致,必须加前缀

可变参数:
由来:定义一个方法的时候,不知道参数具体格式,使用jdk5提供可变参数
格式
修饰符 返回值类型 方法名(数据类型…变量名){
业务
return 结果;
}
特点:
定义一个方法,当不确定参数个数的时候,就可以可变参数 并且将可变参数看成一个数组

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值