循环结构可以在满足循环条件的情况下,控制某一段代码重复的执。这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要控制把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环。
Java开发中,循环结构的实现有三种形式:依次是for循环语句,while循环语句,do-while循环语句。下面我们依次来讲解每种循环的格式和具体使用。
1,for循环格式
for(初始化语句; 循环条件; 迭代语句){
循环体语句;
}for(初始化语句; 循环条件; 迭代语句){
循环体语句;
}
1.2 执行流程
循环开始的时候,先执行初始化语句,然后判断循环条件,如果循环条件返回true,则执行循环体语句。
然后执行迭代语句,然后判断循环条件,如果循环条件返回true.则执行循环体语句。
然后执行迭代语句,然后判断循环条件,如果循环条件返回true.则执行循环体语句。
...
然后执行迭代语句,然后判断循环条件, 如果循环条件返回false.当前循环结束。
案例入门-输出6行语句
public static void main(String[] args) {
//控制台输出6次HelloWorld,不使用循环
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("HelloWorld");
System.out.println("-------------------------");
//用循环改进,循环6次
//定义变量从0开始,循环条件为<6
for(int i = 0; i < 6; i++) {
System.out.println("HelloWorld"+x);
}
}
使用for循环是不是简繁快捷很多呢,阿西吧
流程解释如下
初始化语句是int i = 0 ; 这行语句只会在循环开始的时候执行一次,然后执行循环条件i<6,因为此时i=0,所以循环条件此时是0<6返回true,程序进入循环体语句输出第一行语句"HelloWorld0";
紧接着执行迭代条件i++,此时i=1,然后执行循环条件 1<6返回true,程序进入循环体语句输出第二行语句"HelloWorld1";
紧接着执行迭代条件i++,此时i=2,然后执行循环条件 2<6返回true,程序进入循环体语句输出第三行语句"HelloWorld2";
紧接着执行迭代条件i++,此时i=3,然后执行循环条件 3<6返回true,程序进入循环体语句输出第四行语句"HelloWorld3";
紧接着执行迭代条件i++,此时i=4,然后执行循环条件 4<6返回true,程序进入循环体语句输出第五行语句"HelloWorld4";
紧接着执行迭代条件i++,此时i=5,然后执行循环条件 5<6返回true,程序进入循环体语句输出第六行语句"HelloWorld5";
紧接着执行迭代条件i++,此时i=6,然后执行循环条件 6<6返回false,当前循环结束。
for循环的注意事项:
1.初始化语句执行1次
2.循环使用的变量只在for循环范围内有效。
接下来也是一个案例
打印一个1-100之间的偶数和
public static void main(String[] args){
// 1.输出 1到 100
// 3.定义一个变量求和
int count = 0 ;
for(int i = 0 ; i < 100 ; i++ ){
// i : 0 - 99
// i+1 : 1 - 100
int data = i+1 ; // 2.选出偶数,偶数对2求余的结果一定是0.
if(data % 2 == 0){
//System.out.println(data);
count+=data; // 累加求和。
}
}
System.out.println("求和:"+count);
}
循环语句-while
初始化语句;
while(循环条件) {
循环体语句;
迭代语句;
}
执行流程如下
while循环的执行流程其实与for循环的流程是完全一样的,大家完全可以参考for循环的流程来理解while循环的流程。
循环开始的时候,先执行初始化语句,然后判断循环条件,如果循环条件返回true,则执行循环体语句。
然后执行迭代语句,然后判断循环条件,如果循环条件返回true.则执行循环体语句。
然后执行迭代语句,然后判断循环条件,如果循环条件返回true.则执行循环体语句。
...
然后执行迭代语句,然后判断循环条件, 如果循环条件返回false.当前循环结束。
案例如下--------输出6行语句
public static void main(String[] args){
/*
for(int i = 0 ; i < 6 ; i++ ){
System.out.println("helloWorld"+i );
}
*/
// while在此处的应用于for循环相比较只是写法上有差异,功能流程是完成一样的。
int i = 0 ;
while(i < 6){
System.out.println("helloWorld"+i );
i++;
}
}
案例如下--------输出1-100之间的基数和
public static void main(String[] args){
// 1.输出 1到 100
// 3.定义一个变量求和
int count = 0 ;// 初始化语句
int i = 0 ;
while( i < 100 ){
// i : 0 - 99
// i+1 : 1 - 100
int data = i+1 ; // 2.选出奇数,奇数对2求余的结果一定是1.
if(data % 2 == 1){
//System.out.println(data);
count+=data; // 累加求和。
}
i++;
}
System.out.println("求和:"+count);
}
还有一种是do-while循环
初始化语句;
do {
循环体语句;
迭代语句;
} while(循环条件);
执行流程
do-while循环的执行流程与for循环和while循环的流程是有差异的,do-while循环一来就会执行一次循环体语句。详细流程如下:
循环开始的时候,先执行初始化语句,然后直接执行循环体语句。
然后执行迭代语句,然后判断循环条件,如果循环条件返回true.则执行循环体语句。
然后执行迭代语句,然后判断循环条件,如果循环条件返回true.则执行循环体语句。
...
然后执行迭代语句,然后判断循环条件, 如果循环条件返回false.当前循环结束。
案例入门-输出6行语句
public static void main(String[] args) {
int i=0;
do {
System.out.println("HelloWorld");
i++;
} while(x< 6);
}
do...while循环的特点:无条件执行一次循环体,即使我们将循环条件直接写成false,也依然会循环一次。这样的循环具有一定的风险性,因此初学者不建议使用do...while循环。
public static void main(String[] args) {
do {
System.out.println("无条件执行一次");
} while(false);
}
嵌套循环执行形式
所谓嵌套循环,是指一个循环的循环体语句中又包含了另一个循环。比如for循环里面还有一个for循环,就是嵌套循环。总共的循环次数=外循环次数*内循环次数
嵌套循环格式:如下
for(初始化语句; 循环条件; 迭代语句) {
...// 其他语句
for(初始化语句; 循环条件; 迭代语句) {
循环体语句;
}
...// 其他语句
}
嵌套循环执行原理
外循环每次执行一次,内循环要完整执行完所有次。
public static void main(String[] args){
// 1.循环的嵌套
for(int i = 0 ; i < 3 ; i ++ ){
// i = 0 j = 0 1 2 3 4
// i = 1 j = 0 1 2 3 4
// i = 2 j = 0 1 2 3 4
for(int j = 0 ; j < 5 ; j++ ){
System.out.println(i + "=>"+j);
}
}
}
案例演示:你做错事,你老婆罚你每天说三句我爱你,连续说三天
public static void main(String[] args){
// 1.循环的嵌套
for(int i = 0 ; i < 3 ; i ++ ){
for(int j = 0 ; j < 3 ; j++ ){
System.out.println("我爱你"+i+"-->"+j);
}
}
}
这样是不是很容易理解呢
还有最后一种是死循环
死循环:也就是循环中的条件永远为true,死循环是永不结束的循环。
在后期的开发中,会出现使用死循环的场景,例如:在做聊天程序的时候,服务器要一直不间断的接收你发送的消息,服务器可以使用死循环一直去接收用户发送的消息。
常见的死循环形式有:
while(true){
//一直被重复执行的语句
}
或者可以使用for循环的改写形式实现死循环:
for(;;){
// 一直被重复执行的语句
}
其中while(true){}实现死循环的形式使用较多。大家在实现死循环的时候,如果需要停止死循环程序,可以通过点击Ctrl+C实现。
也可以通过在死循环中使用break关键字实现循环的结束,下节将详细讲解。
break关键字
我们使用for循环和while循环可以让程序重复执行代码.但是有时候我们可能在循环的中途需要让循环结束执行.需要使用break关键字。
break使用场景:跳出循环,让循环提前结束
break使用注意事项
在选择结构switch语句中
在循环语句中
离开使用场景的存在是没有意义的。
结束当前循环
break用哪个循环中,默认就会结束当前所在的哪个循环。
public static void main(String[] args) {
for (int i = 1; i<=10; i++) {
System.out.println("HelloWorld" + i);
//需求:打印完三次HelloWorld之后结束循环
if(i == 3) {
break; // 结束循环
}
}
}
结束外部循环
在开发中有一些极特殊的业务场景可能需要在嵌套循环中结束外部循环,而我们知道 break默认只能结束当前循环,如果要在内部循环中结束外部循环怎么处理呢,可以使用在外部循环上申明标记,格式如下:
标记 : // 标记是合法的标识符,建议大写。
然后通过break 标记来结束指定的外部循环,格式如下:
break 标记; // 结束标记所在的循环。
案例演示:
OUTER: // 标记,可以随便写!
for(int i = 0 ; i < 5 ; i++ ){
for(int j = 0 ; j < 3 ; j++){
System.out.println("行"+i + " 列:"+j);
if(j == 1){
// break默认只能结束当前内部循环
// 如果要在内部循环中结束外部循环怎么处理呢
// 可以采用break 标记;
break OUTER;
}
}
}
continue关键字
使用场景:立即结束循环的本次循环,继续循环的下一次的执行。
continue使用注意事项
必须放在for循环或while循环中
离开使用场景的存在是没有意义的。
结束当前循环的当次循环
/*
continue:立即结束循环的本次循环,继续循环的下一次的执行。**
必须放在for循环或while循环中
*/
public class Demo02continue {
public static void main(String[] args) {
for (int i = 1; i < 10; i++) {
if (i == 3) {
continue; // continue后面的代码不执行.继续下次循环
}
System.out.println("HelloWorld" + i);
}
}
}
结束外部循环的当次循环
在开发中有一些极特殊的业务场景可能需要在嵌套循环中结束外部循环的当次执行,而我们知道 continue默认只能结束当前循环的当次执行,如果要在内部循环中结束外部循环的当次执行怎么处理呢,可以使用在外部循环上申明标记,格式如下:
标记 : // 标记是合法的标识符,建议大写。
然后通过continue 标记来结束指定的外部循环的当次执行,格式如下:
continue 标记; // 结束标记所在的循环。
案例演示:
public static void main(String[] args){
OUT:
for(int i = 0 ; i < 5 ; i++ ){
for(int j = 0 ; j < 4 ; j++){
System.out.println("开始:i="+i +" , j=" + j);
if(j == 2){
//continue ; // 结束当次循环,继续内部循环的下一次执行!
continue OUT; // 结束外部循环的当次循环,进入外部循环的下一次执行!
}
System.out.println("结束:i="+i +" , j=" + j);
}
}
}
谢谢敢看,喜欢滴点个赞!新手勿喷