重学-Java for循环

Posted 爱叨叨的程序狗

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了重学-Java for循环相关的知识,希望对你有一定的参考价值。

Java共有三种for循环方式:

  • fori
  • foreach
  • Stream.foreach

fori

	for (int i = 0; i < arrayList.size(); i++) 
    // dosomething
	

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

foreach

for (String s : arrayList) 
 // dosomething

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

Stream.foreach

arrayList.forEach(array -> 
  // dosomething
);

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

代码测试

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

		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,即:跳出本次循环,进行下一次,所以在foreach中,无论返回条件是什么,都会将List的每一条信息走完。

以上是关于重学-Java for循环的主要内容,如果未能解决你的问题,请参考以下文章

Java for 嵌套循环

java 后执行的for循环比先执行的for循环速度快

Java使用自定义标签结束外层循环

IT兄弟连 Java语法教程 流程控制语句 循环结构语句2

Java中利用标签跳出外层循环break

java怎么判断数组中有重复的元素