循环结构
java循环结构包含:while循环、do while循环、for循环。
while 循环
while循环的语法格式为:
while(表达式){
循环内容
}
其中只要表达式的最终返回值为真,那么就会一直执行循环内容,只有当表达式为假时,才会停止循环。
如下,计算1+2+3+4+…+100的值:
public class sequence_learning3 {
public static void main(String[] args) {
int i=0;
int a=0;
while(i<100){
i++;
a=a+i;
}
System.out.println(a);
}
}
第一次循环
刚开始会判断i<100是否成立。
由于定义的i=0,所以i<100是成立的。
然后执行循环语句:
i++;
a=a+i;
此时,i++执行完后,i的值就由0变为了1,
然后执行 a=a+i;即a=0+1;
执行完后a的值就变为1;
第二次循环
循环内容执行完毕后,再次判断while的表达式是否为真。
由于此时,i的值为1,所以1<100依然成立。
所以将会继续执行循环语句:
i++;
此时,i的值就变为了2
a=a+i; 即 a=1+2;
此时a的值就变为了3。
循环语句执行完毕后,再次判断while表达式是否为真。
直至i加到100,即循环语句执行了100次后,a<100就不成立了。此时,就不在执行循环语句。
且1+2+3+…+100刚好运算完毕。
最终执行 System.out.println(a); 将结果输出。
结果为:
do…while 循环
do…while循环的语法格式为:
do{
循环内容
}while(表达式);
继续利用 do…while语句计算1+2+3+…+100。
如下:
public class sequence_learning3 {
public static void main(String[] args) {
int b=0;
int sum=0;
do{
b++;
sum=sum+b;
}while(b<100);
System.out.println(sum);
}
第一次循环
首先,会先执行循环内容:
b++;
此时,b就由0变成1。
sum=sum+b; 即sum=0+1。
此时sum的值就变为1
然后再判断表达式是否成立。
由于b的值为1,所以while的表达式b<100成立。
第二次循环
所以将会继续执行循环内容:
b++;
此时,b的值就有1变为了2。
sum=sum+b; 即sum=1+2。
此时sum的值就由1变为了3.
然后再判断表达式是否成立。
由于b的值为2,所以while的表达式b<100成立,
所以还将会继续执行循环语句。
直至b的值变为100,即循环语句执行100次后,i<100就将不成立。
便会结束循环,此时1+2+3+…+100也刚好计算完毕。
最终结果为:
do…while 与while循环的相同点:
都是当while语句后的表达式为真时,才会重复执行循环内容。
只有当表达式为假时,才会停止执行循环内容。
do…while 与while循环的不相同点:
while循环是先判断表达式再循环。
do…while是先执行循环语句,再判断表达式。
所以,while循环时,只要一开始表达式就不成立,那么就一次也不会执行循环语句。
而do…while循环时,即使一开始表达式不成立,循环语句也会执行一次。
for 循环
for循环的语法格式为:
for(初始化语句;循环条件判断表达式;循环条件更迭表达式)
{
循环内容
}
用for循环计算1+2+3+…+100
如下:
public class sequence_learning5 {
public static void main(String[] args) {
int sum=0;
for (int i=0;i<=100;i++)
{
sum=sum+i;
}
System.out.println(sum);
}
}
定义sum为最后的总和。
进入for循环时
第一次循环
首先
int i=0;
执行初始化语句。
定义一个更迭对象:变量 i,并将其初始值赋为0。
更迭对象 i 的值,每经过一次循环后,其值都会发生一次变化,变化的量由 循环条件更迭表达式 决定。
然后
i<=100;
执行循环条件判断表达式
当然,由于i此时等于0,所以条件成立。
之后
sum=sum+i;
执行循环内容
由于此时sum=0,且i=0。
所以sum=0+0;
最后
i++;
执行循环条件更迭表达式
i由0增为1。
第二次循环
直接执行 循环条件判断表达式
此时,由于i值已经更迭,由0更迭为1。
所以判断i<=100依然成立。
然后继续执行循环内容
sum=sum+i;
由于sum的值为0
所以 sum=0+1
此时sum的值变为1
最后执行循环条件更迭表达式
i++;
i自增1,此时i的值变为2。
之后再次重复 第二次循环的步骤,直至 循环条件判断表达式 不成立,最终跳出循环,输出sum的最终结果。
最终结果为:
因此,在for循环时,初始化语句只用在第一次循环时执行一次,之后就不再执行。
for 循环的 初始化语句 可以为空语句
如下:
将for循环的初始化语句移出到外面,程序依然可以正常执行。
也就是说,for循环里的语句,可以为 空语句。
例如:
写入空语句,虽然程序不会报错,但是将会陷入死循环。通常情况下,应避免程序进入死循环。
当然,for语句的循环次数是已知的。
例如写入:
100.for
后加 回车
idea会自动帮你生成 执行100次的 for循环语句。
大大提升了工作效率。
增强for循环
JDK5中加入了针对数组和集合的 增强for循环。
增强for循环是针对数组或集合进行操作的。
格式如下:
for(声明变量:数组名)
{
代码段
}
其中,声明变量的类型必须和数组的变量类型一样。
例:
定义一个整形数值,并依次输出该数组的元素。
public class sequence_learning6 {
public static void main(String[] args) {
int arr[]={10,13,11,6,3,0};
for(int num:arr)
{
System.out.println(num);
}
}
}
最终结果为:
如果要用普通的for循环,那么就应该如此写:
public class sequence_learning6 {
public static void main(String[] args) {
int arr[]={10,13,11,6,3,0};
for(int i=0;i<arr.length;i++)
{
System.out.println(arr[i]);
}
}
}