前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >重学-Java for循环

重学-Java for循环

作者头像
关忆北.
发布2022-09-08 11:23:32
1.1K0
发布2022-09-08 11:23:32
举报
文章被收录于专栏:关忆北.关忆北.

Java共有三种for循环方式:

  • fori
  • foreach
  • Stream.foreach
fori
代码语言:javascript
复制
	for (int i = 0; i < arrayList.size(); i++) {
    // dosomething
	}

fori这种方式是Java最早的for循环方式,由于Java语法糖的不断完善,以及JDK 8的出现,是得此种方式大多数出现在教条的大学课本上,在实际的企业开发中用的较少,目前阿里巴巴的代码检测插件也会提示可以将fori的形式转换为foreach的形式。

foreach
代码语言:javascript
复制
for (String s : arrayList) {
 // dosomething
}

即增强for循环,这种方式是第一种fori的语法糖,在编译后,对应的foreach便会自动转换为fori的形式。

Stream.foreach
代码语言:javascript
复制
arrayList.forEach(array -> {
  // dosomething
});

此种方式是JDK 1.8之后随lambda表达式出现的for循环方式,代码更加简洁,并且可配合其他新特性使用更少的代码、以最简单的形式完成复杂操作,但是使用本方式要注意returnbreak并不能完成在前两者的目的。

代码测试

定义四个元素的List列表,当循环到值为hello1时输出并返回。

代码语言:javascript
复制
		List<String> arrayList = new ArrayList<String>();
		arrayList.add("hello");
		arrayList.add("hello1");
		arrayList.add("hello2");
		arrayList.add("hello3");

    //① 使用fori的形式
   	for (int i = 0; i < arrayList.size(); i++) {
			String s = arrayList.get(i);
			System.out.println(s);
			if (s.equals("hello1")) {
				break;
			}
		}


		for (int i = 0; i < arrayList.size(); i++) {
			String s = arrayList.get(i);
			System.out.println(s);
			if (s.equals("hello1")) {
				return;
			}
		}


	  //输出:
		hello
		hello1
      
     for (String s : arrayList) {
			System.out.println(s);
			if (s.equals("hello1")) {
				break;
			}
		} 
      
    //② 使用增强for循环的方式
    for (String s : arrayList) {
			System.out.println(s);
			if (s.equals("hello1")) {
				return;
			}
		}


   //输出
		hello
		hello1
      
      
   //③ 使用Stream.foreach的形式
     arrayList.forEach(array -> {
			System.out.println(array);
			if (array.equals("hello1")) {
				break;
			}
		});


		arrayList.forEach(array -> {
			System.out.println(array);
			if (array.equals("hello1")) {
				return;
			}
		});

	 //输出:
   无输出,编译报错,在Stream.foreach中,无法使用break关键字.
     
     
      List<String> list = Arrays.asList("123", "456", "789", "115");
        list.forEach(element -> {
            if (element.equals("456")) {
                // 跳出本次循环
                return;
            }
            System.out.println(element);
        });
    }

	//输出:
	123
  789
  115

break :跳出所在的当前整个循环,到循环外层代码继续执行 continue: 跳出本次循环,到下一个迭代循环 return : 直接返回方法,当前方法的后续代码将都不会被执行

注意:在Stream.foreach中,return的作用相当于普通for循环中的continue,即:跳出本次循环,进行下一次。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-07-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • fori
  • foreach
  • Stream.foreach
  • 代码测试
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档