为了更好的处理问题,除了顺序结构和条件判断结构语句,JAVA还提供了循环结构语句。

JAVA中主要有三种循环结构语句:
1.while循环
2.do…while循环
3.for循环


while循环

结构形式:

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

只要布尔表达式结果为true,那么循环会一直进行下去。

代码实例:

public class Demo01while {
   public static void main(String[] args) {
      int x = 10;
      while( x < 20 ) {
         System.out.print("value of x : " + x );
         x++;
         // System.out.print("\n");	// 换行
      }
   }
}

结果如下:
value of x : 10
value of x : 11
value of x : 12
value of x : 13
value of x : 14
value of x : 15
value of x : 16
value of x : 17
value of x : 18
value of x : 19


do…while循环

对于while循环来说,如果不满足条件,则不能进入循环。但是有时候处理问题,即使不满足条件,也需要执行一次,此时便用到了do…while循环。

do…while 循环和 while 循环相似,不同的是,
do…while 循环至少会执行一次

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

注意:布尔表达式在循环体的后面,所以语句块在检测布尔表达式之前已经执行了。 如果布尔表达式的值为 true,则语句块一直执行,直到布尔表达式的值为 false。
说白了,看到do…while格式后,便知道为什么该循环为什么至少执行一次了,因为while在do的后面,先执行do,然后再while布尔判断。

代码演示:

public class Demo02DoWhile {
	public static void main(String args[]) {
		int x = 100;
		
		do{
			System.out.println("value of x : " + x );
			x++;
			// System.out.println("\n");	// 换行
		}while( x < 20 );
		System.out.println("value of x : " + x );
	}
}

执行结果:
value of x : 100
value of x : 101

通过代码举例,我们可以看到执行结果,x=100不符合x<20,但是do…while循环却执行了do部分中的代码,执行了加一操作。


for循环

虽然while和do…while循环基本上可以处理大部分问题,但是for循环在很多循环中处理问题更加简单。

格式:
for(初始化表达式; 布尔表达式; 步进表达式) {
//代码语句
}

关于for循环要注意以下几点:

  • 最先执行初始化步骤。可以声明一种类型,但可初始化一个或多个循环控制变量,也可以是空语句。
  • 其次执行的便是布尔表达式,如果结果为true,循环体被执行。如果为false,循环终止,开始执行循环体后面的语句。
  • 执行一次循环之后,通过步进表达式更新循环控制变量。
  • 再次检测布尔表达式。循环执行上面的过程。

代码演示:

public class Demo03For {
	public static void main(String[] args) {
		for (int i = 1; i < 10; i++) {
			System.out.println("I am sorry!!!" + i);
		}
		System.out.println("程序停止");
	}
}

执行结果:
I am sorry!!! 1
I am sorry!!! 2
I am sorry!!! 3
I am sorry!!! 4
I am sorry!!! 5
I am sorry!!! 6
I am sorry!!! 7
I am sorry!!! 8
I am sorry!!! 9
程序停止



题目:求出1-100之间的偶数和。

for循环求和:

public class Demo04NumSum {
	public static void main(String[] args) {
		int sum = 0;	// sum是用来累加的存钱罐
		
		for (int i = 1; i <= 100; i++) {
			if (i % 2 == 0) {
				sum += i;
			}
		}
		System.out.println("结果为: " + sum);	// 2550
	}
}

while循环求和:

public class Demo04NumSum {
	public static void main(String[] args) {
		int sum = 0;	// sum依旧是累加的容器
		int i = 1;
		while (i <= 100) {
			if (i % 2 == 0) {
				sum += i;
			}
			i++; // 步进表达,循环更新
		}
		System.out.println("结果为: " + sum);	// 2550
	}
}

总结:不论是for循环,还是while循环,对于求和其实都比较简单,但是对于不同的问题,其实我们可以针对性的处理,比如上面求和的例子其实就是等差数列的求和,为什么我们不利用数学的思想呢,如果利用等差数列求和公式,程序是不是直接一步到位执行完毕,何必循环一百次呢。算法用处的最最简单举例。。。