什么是for?
在Java流程控制语句中,for属于循环语句,用来进行循环执行代码块,根据条件来进行循环,直到条件不符合则退出循环,具体用法如下
for的用法
主要用法:for
for (int i = 0; i < 5; i++) {
System.out.println("i = " + i);
}
该代码执行的结果是:
i = 0
i = 1
i = 2
i = 3
i = 4
在for循环中,变量可以直接在for之后的()内定义,条件写在变量之后,最后写变量的增删等变化,三者用 ; 进行隔开。
尤其注意的是,执行循序并不以书写顺序为准,for循环的执行循序为:
变量初始化-->条件判断-->循环代码块-->变量增删变化
以示例代码为准:优先执行int i = 0,然后进行判断i < 5是否成立,如果成立则执行for循环内部代码,内部代码执行完毕之后,最后执行i++,对变量i进行操作,接着进行第二次循环,直接判断条件i < 5是否成立,以此类推。前边的变量初始化int i = 0仅执行一次,不会进行第二次执行。如果条件判断不成立,for循环内部代码以及对变量i的操作都不会执行。
嵌套for循环
for (int x = 1; x <= 3; x++) {
System.out.println("x = " + x);
for (int y = 1; y <= 3; y++) {
System.out.println("y = " + y);
}
}
该代码执行的结果是:
x = 1
y = 1
y = 2
y = 3
x = 2
y = 1
y = 2
y = 3
x = 3
y = 1
y = 2
y = 3
由上可知:for循环的嵌套,是每执行一次外循环,内循环都要从第一次执行到条件为false。当执行第二次外循环的时候,内循环的变量会重新初始化,从头开始执行。
由此,我们可以进行以下操作:
for (int m = 1; m <= 9; m++) {
for (int n = 1; n <= m; n++) {
System.out.print(m + "*" + n + "=" + n * m + "\t");
}
System.out.println();
}
该代码执行的结果是:
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
for嵌套最典型的例子就是九九乘法表的打印,如上所示,通过对变量n和m的条件控制,以及变量操作实现九九乘法表的打印。
特殊用法:
for后边括号内的内容并不是必须的,我们可以根据需求进行选择是否要填写,但是要注意的是,分号是不能缺少的:
1:省略变量初始化
int i = 0;
for (; i < 5; i++) {
System.out.println("i = " + i);
}
当需要在for循环中进行判断的变量在for循环外已经进行初始化的时候,for后的变量初始化可以忽略不写。
2:省略条件判断
for (i = 0;; i++) {
System.out.println("i = " + i);
if (i == 5) {
break;
}
}
省略条件判断该用法较少,一般都以while代替,如果代码需要这么编写,一定要在循环体内进行判断,使用流程关键字进行跳出循环(流程关键字在下文有说明),否则便会造成死循环,同时要注意,在对变量操作n次后会不会使if的判断条件为true,如果不能也会造成死循环,所以此类情况出现较少。
3:省略变量操作
for (i = 0;i > 5;) {
System.out.println("i = " + i);
i++;
}
当for循环体内出现对变量的操作时,for后的变量操作部分可以进行省略,防止对变量进行二次操作,导致条件判断出现问题。反之同样,如果省略了for后边的变量操作,则必须要在循环体内进行变量操作,否则会因为变量不更改,条件一直为true陷入死循环。
4:其他
特殊的是,for循环的三个部分并不是仅能省略一个,是可以一次省略两个甚至三个,但是用途极少,便不再进行演示,如果有此类情况,只需要确保自己的代码符合要求,不会造成死循环即可。
拓展
1:流程关键字
(1):break
break,用于switch和循环语句中,可以打破switch和循环执行,但是要注意,break能且仅能打破一层,如果是嵌套循环,在内循环中break,则只能打破内循环,不会打破外循环。
(2):continue
continue,只能在循环语句中使用,意味跳过本次循环执行下一次循环,不会打破循环,只会进行跳过。
两者区别:
break是破坏循环,使循环在执行到break后,不论循环内break后边有什么都不再执行,也不会进行下以此判断;而continue是跳过循环,仅仅是跳过一次循环,跳过后,循环内continue后的代码也不会执行,但是会进行下一次判断,继续执行循环。
此处不再进行演示,可以自行操作测试。
2:作用域
在Java代码中,每个变量都有属于自己的作用域,简单来说就是变量能够发挥作用的区域,每个变量的作用域是定义变量时所处的大括号内。
//外循环
for (int n = 0; n < 3; n++) {
int a = 1;
//内循环1
for (int i = 1; i < 3; i++) {
int b = 1;
}
//内循环2
for (int i = 1; i < 3; i++) {
int b = 1;
}
}
以上述代码为例:
变量n和变量a的作用域都是外循环,只要是在外循环中,变量n和变量a都可以发挥作用。两个内循环中都定义了变量i和变量b,但是并没有产生冲突,所以变量i和变量b分别作用在内循环1和内循环2中,也就是被定义时所在的大括号内;
特殊的,在for后()内定义的变量作用域是for循环内部,而不是for所在的大括号,以内循环1定义的变量i为例,它的作用域是内循环1,而不是外循环。
标签:语句,Java,变量,int,流程,break,++,循环,执行 From: https://blog.csdn.net/loser_mine/article/details/143691265