JDK5的新特性之 增强for
package cn.itcast.day19.foreach; import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.ListIterator; /*
* JDK5的新特性:自动拆装箱,泛型,可变参数,增强for,静态导入,枚举
*
* 增强for:是for循环的一种
*
* 格式:
* for(元素数据类型 变量:数组或者Collection集合){
*
* }
*
*好处:简化了数组和Collection集合的遍历
*
*弊端:
* 1 增强for的目标不能为null
* 解决:对增强for的目标先进行不为null的判断,然后再使用
* 2 无法在迭代过程中修改集合
* 解决:没辙
*/
public class ForEachDemo { public static void main(String[] args) {
String[] arr1=new String[]{"林青霞","风清扬","猪八戒","沙和尚"};
for(String s:arr1){
System.out.println(s);
}
System.out.println("---------"); Collection<String> arr2=new ArrayList<String>();
arr2.add("林青霞");
arr2.add("风清扬");
arr2.add("猪八戒");
arr2.add("沙和尚"); for(String s:arr2){
System.out.println(s);
}
System.out.println("---------"); //增强for其实就是迭代器
//迭代器迭代集合,正在迭代的过程中,集合操作集合元素ConcurrentModificationException
// for(String s:arr2){
// if("林青霞".equals(s)){
// arr2.add("孙悟空");
// }
// } //列表迭代器迭代集合,迭代器修改结合
List<String> arr3=(List<String>)arr2;
ListIterator<String> it=arr3.listIterator();
while(it.hasNext()){
String s=it.next();
if("林青霞".equals(s)){
it.add("周杰伦 ");
}
}
System.out.println("arr3: "+arr3); System.out.println("---------");
List<String> list=null;
//对增强for的目标先进行不为null的判断,然后再使用
if(list!=null){
//s是从list中拿出来的,在拿之前肯定会判断list是否有元素,而这时list=null,报空指针
for(String s:list){
System.out.println(s);
}
} } }
JDK5的新特性之 增强for的更多相关文章
- JDK5的新特性之增强for循环遍历数组或集合
[格式] for(元素的类型 变量名 : 数组或Collection集合名){ //此处使用变量名即可,该变量就是普通for里的i. }
- Javaweb学习笔记——(七)——————myexlipse基本使用、jdk5.0新特性及反射讲解
1.debug调试模式: *使用这种模式,调试程序(看到程序运行停止在这一行) -显示出来行号 -双击左边,出现一个圆点,表示设置了一个断点 *使用debug as方式,运行程序 -特使是否进入到调试 ...
- Day07 jdk5.0新特性&Junit&反射
day07总结 今日内容 MyEclipse安装与使用 JUnit使用 泛型 1.5新特性 自动装箱拆箱 增强for 静态导入 可变参数方法 枚举 反射 MyEclipse安装与使用(yes) 安装M ...
- Java JDK5.0新特性
JDK5.0新特性 虽然JDK已经到了1.8 但是1.5(5.0)的变化是最大的 1. 增强for循环 foreach语句 foreach简化了迭代器 作用: 对存储对象的容器进行迭代 (数组, co ...
- JavaSE 学习笔记之Jdk5.0新特性(十九)
Jdk5.0新特性: Collection在jdk1.5以后,有了一个父接口Iterable,这个接口的出现的将iterator方法进行抽取,提高了扩展性. --------------------- ...
- Java基础和JDK5.0新特性
Java基础 JDK5.0新特性 PS: JDK:Java Development KitsJRE: Java Runtime EvironmentJRE = JVM + ClassLibary JV ...
- JDK5的新特性:泛型、可变参数、静态导入
数组可以在创建的时候就指定存放的数据类型,这样放入不同类型的时候就会发生编译错误. 而集合却可以存储多种不同类型,这样的话如果是遍历的时候在集合中装了好多不同的数据类型的时候,十分容易发生类型转换错误 ...
- 59. jdk1.5新特性之----增强for循环
/*jdk1.5新特性之----增强for循环:底层是一个迭代器 作用:简化迭代器书写格式 使用范围:实现了Iterable接口的对象或者数组对象 格式: for(变量类型 变量名 :遍历目标 ...
- JDK5.0新特性 (Day_07)
JDK5.0新特性 目录 静态导入 自动装箱/拆箱 for-each循环 可变参数 枚举 JDK 5.0 新特性简介 JDK 5.0 的一个重要主题就是通过新增一些特性来简化开发,这些特性包括 ...
随机推荐
- (转)JAVA常见面试题之Forward和Redirect的区别
阅读目录 一:间接请求转发(Redirect) 二:直接请求转发(Forward) 用户向服务器发送了一次HTTP请求,该请求可能会经过多个信息资源处理以后才返回给用户,各个信息资源使用请求转发机制相 ...
- (转)request.getSession()几种获取情况之间的差异
一.三种情况 HttpSession session = request.getSession(); HttpSession session = request.getSession(true); H ...
- 小程序获取地址授权的修改 wx.openSetting需点击
开发者可以通过 wx.openSetting 接口来打开小程序设置界面并返回用户的设置结果.在原来的 wx.openSetting 接口中,我们允许开发者直接调用此接口,但目前我们发现有不少开发者滥用 ...
- Cglib invoke以及invokeSuper的一点区别
简单记录下,解决的一个问题,Cglib的invoke和invokeSuper的区别: 简而言之,invoke方法调用的对象没有增强过,invokeSuper方法调用的对象已经是增强了的,所以会再走一遍 ...
- picker(级联)组件及组件封装经验
组件封装的几个经验 a.参数:最佳方式,仅一个object参数,所需要的实际参数,作为对象属性传入. 如此,便于数据的处理和扩展.例如,后期扩展需要增加参数,或者调整参数时,如果使用的对象传入,老的调 ...
- Netty 核心组件 Pipeline 源码分析(一)之剖析 pipeline 三巨头
目录大纲: 前言 ChannelPipeline | ChannelHandler | ChannelHandlerContext 三巨头介绍 三巨头编织过程(创建过程) ChannelPipelin ...
- ifream框架角色切换
js受制于单个页面,用ifream框架做web系统,会遇到角色切换菜单刷新的问题,我就来讲一下我的思路: 用户登录时将用户角色放入session中,以角色id为key,权限为值,角色切换时将相应角色i ...
- JS获取元素属性
<style> *{ box-sizing: border-box; } html, body { margin: 0px; width: 100%; height: 100%; over ...
- springboot No Java compiler available for configuration options compilerClassName: [null] and compil
今天使用eclipse创建springboot整合jsp出现一个问题,在idea中并没有遇到这个问题.最后发现是需要在eclipse中添加一个eclipse依赖,依赖如下: <dependenc ...
- 令人血脉喷张的animate.css
都说html5.css3是大局是潮流,尽管css3也不难,学起来比较简单,但我还是喜欢他的轻量级集大成者的animate.css框架,初学的小伙伴们加油啦 下面我分析一下animate.css框架里面 ...