还记得Java中那个变强后的for循环嘛?

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sun8112133/article/details/81667363

版权声明:本文为 小异常 原创文章,非商用自由转载-保持署名-注明出处,谢谢!
本文网址:https://blog.csdn.net/sun8112133/article/details/81667363

  当前最受欢迎之一的编程语言 —— Java,多年来已经经历了很多个版本,每一个版本都是在前一个版本的基础上再根据时代的需求增加了相对比较新颖的特性,一个没有自动进化符合时代发展的语言,都将会被淘汰!

  本篇就带大家回顾一下在 Java5 的时候出现的新特性 —— 增强for循环。

  在 Java5 的时候,开发团队根据大多数程序猿的日常开发需求,对原来的 普通for循环 进行了功能增强,大大提高了在日常开发的工作效率,同时也受到了众多程序猿的欢迎,直到现在在开发中 增强for循环 也是比较常见的。

  本篇对 增强for循环 简要做总结,以实例形式帮助初学者快速掌握,利人也利己。

本篇大体可以分为三大部分:

  一、增强for循环简介

  二、语法基本格式与使用场景

  三、慎用增强for循环之可能陷阱





一、增强for循环简介

  增强的for循环 是在 传统的for循环 中增加了强大的迭代功能的循环,是在 Java5 的时候提出来的。引入增强for循环的原因:在 Java5 以前的版本中,遍历数组或集合中的元素,需要先获得数组的长度或集合的迭代器,比较麻烦。 但在 Java5 的时候,提出了一个新的特性,专门用来 遍历数组 和 遍历实现Iterable接口的集合

  增强for循环 也有人称为是 foreach循环,它是 Java中 提供的一颗语法糖(所谓语法糖,说白了就是一种语法,这种语法能够让代码更加简洁流畅,使程序员们写得很爽,看起来也爽,就像吃了糖一样。但它最后还是会被转换成最原始的代码)。

  对于 增强for循环 底层实现的原理,初学者大可不必深究,只需要知道当使用 增强for循环 遍历数组时,底层使用的是 普通for循环 来实现;当遍历的是集合时,底层使用的是 迭代器 实现。初学者知道这两点即可,其他不必深究(遍历的意思是访问数组或集合中的每一个元素或数据)。


二、语法基本格式与使用场景

1、遍历数组

  我们先来看看如果使用 普通for循环 是如何遍历数组的:

// 使用普通for循环遍历字符数组的内容
for (int i = 0; i < strArr.length; i ++) {
    System.out.println(strArr[i]);
}

  如果换成 增强for循环 来遍历数组:

// 使用普通for循环遍历字符数组的内容
for (String str : strArr) {
    System.out.println(strArr[i]);
}

  大家对比一下以上两种方式,细心的小伙伴们就会发现当我们使用 普通for循环 来遍历数组时,我们需要指定数组的长度,还需要有一个数组的下标变量i;但使用 增强for循环 就非常容易了,我们只需要指出元素的数据类型,以及要遍历的数组名即可,它就能自动的将数组中的所有元素依次遍历出来。但这种方式也会有相应的缺陷,我们会在第三部分说明。

格式:

for (元素的数据类型 变量名 : 数组名) {
    // 遍历内容
}

2、遍历集合

  我们还是先来看一下之前用来遍历集合的几种方式,在没有出现 增强for循环 之前,我们通常遍历集合有以下两种方式:

// 使用普通for循环遍历集合
for (int i = 0; i < list.size(); i++) {
    System.out.println(list.get(i));
}
// 使用迭代器遍历集合
Iterator iterator = list.iterator();
while (iterator.hasNext()) {
    System.out.println(iterator.next());
}

  我们分别来看一下这两种方式。第一种方式使用的是 普通for循环 遍历集合,我们需要调用 size方法 获取集合的长度,再调用 get方法 获取集合的元素,还需要一个下标变量i;第二种方式使用的是迭代器遍历集合,这种方式更加的难理解,先要获取该集合的迭代器,再依次获取下一个元素,这种方式如果你的数据结构学的不是很好,理解起来会特别吃力的。为了方便广大程序员,在 Java5 中提供了 增强for循环 来遍历集合:

// 使用增强for循环遍历集合
for (String str : list) {
    System.out.println(str);
}

  可能你在遍历数组时还没有体验到 增强for循环 的方便之处,但在遍历集合时,我相信你已经能够充分感受到 增强for循环 的强大方便之处了。赶快来试试吧!

格式:

// 这里的集合是指实现了Iterable接口的集合
for (元素的数据类型 变量名 : 集合名) {
    // 遍历内容
}


三、慎用增强for循环之可能陷阱

1、增强for循环 不支持遍历时修改,使用 增强for循环 一般只进行遍历,不进行修改!
2、使用 增强for循环 时,对遍历的集合需要做null判断,不然可能引发空指针异常。


猜你喜欢

转载自blog.csdn.net/sun8112133/article/details/81667363