重学-Java for循环

2022-09-08 11:23:32 浏览数 (1)

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,即:跳出本次循环,进行下一次。

0 人点赞