java 16 - 9 增强for的概述和使用

  JDK5的新特性:自动拆装箱,泛型,增强for,静态导入,可变参数,枚举

  增强for:是for循环的一种。

  格式:
    for(元素数据类型 变量 : 数组或者Collection集合) {
        使用变量即可,该变量就是元素
      }

  好处:简化了数组和集合的遍历。

  弊端: 增强for的目标不能为null。
    如何解决呢?对增强for的目标先进行不为null的判断,然后在使用。

 1 import java.util.ArrayList;
 2 import java.util.Collection;
 3 import java.util.List;
 4 public class ForDemo {
 5
 6 public static void main(String[] args) {
 7 //int数组的遍历
 8 int[] arr = {11,22,33,44,55,66,77};
 9 for(int i : arr){
10 System.out.println(i);
11 }
12 System.out.println("---------");
13
14 //String数组的遍历
15 String[] str = {"阿猫","阿狗","花花","草草"};
16 for(String s : str){
17 System.out.println(s);
18 }
19 System.out.println("---------");
20
21 //Collection集合的遍历
22 Collection<Integer> c = new ArrayList<Integer>();
23 c.add(2008);
24 c.add(2012);
25 c.add(2016);
26 for(Integer i : c){
27 System.out.println(i);
28 }
29 System.out.println("---------");
30
31 //ArrayList集合的遍历
32 ArrayList<String> s = new ArrayList<String>();
33 s.add("java");
34 s.add("javaee");
35 s.add("javase");
36 s.add("Android");
37 for(String ss : s){
38 System.out.println(ss);
39 }
40 System.out.println("---------");
41
42 //但是,当遍历的是一个空集合呢?
43 List<Double> l = null; //大写的Double才是引用类型
44 //NullPointerException
45 // 这个d是我们从list里面获取出来的,在获取前,它肯定还好做一个判断
46 // 说白了,这就是迭代器的功能
47 //解决方法:给它加个进入语句的条件
48 if(l != null){
49 for(Double d : l){
50 System.out.println(d);
51 }
52 }
53
54 // 增强for其实是用来替代迭代器的
55 //ConcurrentModificationException
56 for(String s1 : s){
57 if("Android".equals(s1)){
58 s.add("IOS");
59 }
60 System.out.println(s1);
61 }
62
63 }
64 }

  ArrayList存储字符串并遍历。要求加入泛型,并用增强for遍历。
  目前掌握了3种遍历方法:
    A:迭代器
    B:普通for
    C:增强for

 1 import java.util.ArrayList;
 2 import java.util.Iterator;
 3 public class ArrListDemo {
 4
 5 public static void main(String[] args) {
 6 //创建ArrayList集合
 7 ArrayList<String> list = new ArrayList<String>();
 8 //给集合添加元素
 9 list.add("java");
10 list.add("javaee");
11 list.add("javase");
12 list.add("Android");
13
14 //第一种遍历方法:迭代器
15 Iterator<String> it = list.iterator();
16 while(it.hasNext()){
17 String s = it.next();
18 System.out.println(s);
19 }
20 System.out.println("-------");
21
22 //第二种遍历方法:普通for
23 for(int x = 0; x < list.size(); x++){
24 String s1 = list.get(x);
25 System.out.println(s1);
26 }
27 System.out.println("-------");
28
29 //第三种遍历方法:增强for
30 for(String s2 : list){
31 System.out.println(s2);
32 }
33 }
34
35 }
时间: 2024-08-04 09:50:04

java 16 - 9 增强for的概述和使用的相关文章

[转帖]Java虚拟机(JVM)体系结构概述及各种性能参数优化总结

Java虚拟机(JVM)体系结构概述及各种性能参数优化总结 2014年09月11日 23:05:27 zhongwen7710 阅读数 1437 标签: JVM调优jvm 更多 个人分类: Java知识点总结技术架构原理 https://blog.csdn.net/zhongwen7710/article/details/39213377 写的很好.. 堆栈分不清楚的我 愧对计算机系毕业.. 第一部分:相关的概念 数据类型 Java虚拟机中,数据类型可以分为两类:基本类型和引用类型.基本类型的变

javaAgent和Java字节码增强技术的学习与实践

参考文章: https://www.cnblogs.com/chiangchou/p/javassist.html https://blog.csdn.net/u010039929/article/details/62881743 https://www.jianshu.com/p/0f64779cdcea [本文代码下载] 下载代码 [背景] 最近在工作中进行程序的性能调优时,想起之前同事的介绍的阿里的Java在线诊断工具 —— arthas,决定试用一下. 这玩意,是真的好用,能在对被检测程

java 16进制转换10进制

public static String toHexString2(byte[] b) { StringBuffer buffer = new StringBuffer(); for (int i = 0; i < b.length; ++i) { buffer.append(toHexString2(b[i])); } return buffer.toString(); } public static String toHexString2(byte b) { char[] buffer =

java 容器Collection List Set Map概述

对JAVA的集合的理解是想对于数组 数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型) JAVA集合可以存储和操作数目不固定的一组数据. 所有的JAVA集合都位于 java.util包中! JAVA集合只能存放引用类型的的数据,不能存放基本数据类型. JAVA集合主要分为三种类型: Set(集) List(列表) Map(映射) Collection 接口 Collection是最基本的集合接口,声明了适用于JAVA集合(只包括Set和List)的通用方法. Set 和

java 16进制与字符串直接相互转换

java 16进制与字符串直接相互转换 CreationTime--2018年7月12日09点39分 Author:Marydon 1.16进制转换成字符串 /** * 16进制直接转换成为字符串 * @explain * @param hexStr 16进制字符串 * @return String */ public static String fromHexString(String hexString) { // 用于接收转换结果 String result = ""; // 转

java 16 -11 ArrayList存储自定义对象并增强for遍历

需求:ArrayList存储自定义对象并遍历.要求加入泛型,并用增强for遍历. A:迭代器 B:普通for     C:增强for LinkedList,Vector,Colleciton,List等存储继续练习 增强for是用来替迭代器. 1 package cn_JDK5new; 2 3 import java.util.ArrayList; 4 import java.util.Iterator; 5 6 7 public class ArrListDemo2 { 8 public st

Java基础知识强化之IO流笔记16:IO流的概述和分类

1. IO流的分类   流向:     (1)输入流:读取数据到内存     (2)输出流:写入数据到硬盘(磁盘)   操作的数据类型:    (1)字节流:操作的数据是字节                            输入流                            输出流        (2)字符流:操作的数据是字符,为了方便操作文本数据,Java就提供了字符流.                            输入流                      

Java基础---IO(一)---IO流概述、字符流

   IO概述 概述 1.IO流:即InputOutput的缩写. 2.特点: 1)IO流用来处理设备间的数据传输. 2)Java对数据的操作是通过流的方式. 3)Java用于操作流的对象都在IO包中. 4)流按操作数据分为两种:字节流和字符流. 5)流按流向分为:输入流和输出流. 注意:流只能操作数据,而不能操作文件. 3.IO流的常用基类: 1)字节流的抽象基流:InputStream和OutputStream 2)字符流的抽象基流:Reader和Writer 注:此四个类派生出来的子类名称

Java类编译后Class文件概述(上)

一.Class文件 注意:每一个Class 文件都对应着唯一一个类或接口的定义信息,但是相对地,类或接口并不一定都得定义在文件里(譬如类或接口也可以通过类加载器直接生成). 二.class文件的文件结构 class文件格式采用一种类似于C语言结构体的伪结构来存储数据,这种伪结构只有两种数据类型:无符号数和表. class文件的结构描述 ClassFile { u4 magic; <span style="white-space:pre"> </span>//4位