集合--增强for循环、泛型

本文详细介绍了Java中增强for循环的使用、泛型的概念、实现原理,以及泛型在集合排序、自定义泛型类、接口和方法中的应用。通过实例解析了泛型的上限和下限,指出泛型不支持多态的特点。
摘要由CSDN通过智能技术生成

1 增强for循环

(1)格式:for(数据类型 变量:遍历对象(集合或数组)){
语句
}
变量就等价于next()方法返回的结果
(2)原理:增强for循环底部原理仍然是调用了迭代器。
(3)好处及弊端:简化了迭代器代码。只能做遍历元素操作,不能够在遍历的过程中对集合元素做其它操作。

public static void main(String[] args) {
		// 创建对象并添加
		List list = new ArrayList();
		list.add(new Student("tanzhou1",28));
		list.add(new Student("tanzhou2",19));
		list.add(new Student("tanzhou3",24));
		//	增强for循环,只能用来遍历元素
		for (Object obj : list) {
			//	注意:这里不仅仅指只获取全部元素,
			Student stu = (Student)obj;
			System.out.println(stu.getName());
			System.out.println(obj);
		}
		// 遍历数组时,如果只需要取出元素,可以使用增强for	
		String[] str = { "1", "2" };
		for (String s : str) {
			System.out.println(s);
		}
	}

如果add添加的是字符串,那么用for循环时,数据类型是Object。而不是String,String是类,是一种类型,add添加的是一个对象。

2 泛型(Generic)

问题:
什么类型的元素都可以都可以进行存储,那么就会导致遍历元素时,如果需要调用某一种对象特有的方法,此时就要向下转型,就会引发运行时异常。JDK1.5版本之后 创建集合的时候,直接在集合上明确要存储的元素类型:泛型 <引用数据类型>,可类比于method(int a)。
好处:
泛型的主要目标是实现java的类型安全。泛型可以使编译器知道一个对象的限定类型是什么,消除了强制类型转换。在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,将可能发生的运行时期异常转移到了编译时期异常。
(1)性能优化(2)类型安全(同一类型)(3)消除强制类型转换

3 实现原理

泛型的实现是依靠类型擦除技术。 Java中的泛型基本上都是在编译器这个层次来实现的,在生成的Java字节码中是不包含泛型中的

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值