Java循环精讲


Java 循环语句


你将学到

1、Java循环体的用法

2、循环退出语句 continue、 break、 return

3、常见的循环体的“坑”

4、如何选择循环体

1、Java循环的用法

  • for 循环

    //传统语法 for(初始化; 布尔表达式; 更新) { //代码语句 }

    //增强语法,For-Each循环 for(declaration : expression) { //Statements }

  • whiledo…while 循环

    while( 布尔表达式 ) { //循环内容 }

    do { //代码语句 }while(布尔表达式);

例子:遍历数组

int[] data = {1, 2, 3, 4, 5};

//for 循环
for(int i = 0; i < 5; i++ ){
    System.out.println( data[i] );
}

//for-each 循环
for(int t : data){
    System.out.println(t);
}

//while 循环
int x = 0
while( x < 4 ) {
    System.out.print("value of x : " + data[x] );
    x++;
    System.out.print("\n");
}

//do...while 循环
int x = 0;
do{
    System.out.print("value of x : " + data[x] );
    x++;
    System.out.print("\n");
}while( x < 20 );

//迭代器循环
String[] strings = {"A", "B", "C", "D"};
Collection stringList = java.util.Arrays.asList(strings);
for (Iterator itr = stringList.iterator(); itr.hasNext();) {
    Object str = itr.next();
    System.out.println(str);
}

无限循环

for(;;){  
    //code to be executed  
}

for(true){  
    //code to be executed  
}

2、循环退出语句 continue、 break、 return

  • Break 终止当前循环;

  • Continue 结束本次循环,进入下一次循环;

  • return 结束程序,返回结果;

3、常见的循环体的“坑”

  • For-Each循环的缺点:丢掉了索引信息
  • 迭代器遍历时,对集合进行删除要注意,有可能发生ConcurrentModificationException,例如:
//会抛出ConcurrentModificationException异常的代码 
for (Student stu : students) {    
   if (stu.getId() == 2)     
       students.remove(stu);    
}

//正确的在遍历的同时删除元素的姿势:
Iterator<Student> stuIter = students.iterator();    
while (stuIter.hasNext()) {    
   Student student = stuIter.next();    
   if (student.getId() == 2)    
       stuIter.remove();
//这里要使用Iterator的remove方法移除当前对象,如果使用List的remove方法,则同样会出现ConcurrentModificationException    
}

4、如何选择循环体

  • for循环结束,该变量就从内存中消失,能够提高内存的使用效率
  • for循环适合针对一个范围判断进行操作
  • while循环适合判断次数不明确操作
  • 用 for-each 执行日常迭代,但对于迭代一个范围或跳过范围中的值等操作,使用 for
关闭菜单