循环语句
循环结构:
在程序当中总有一些需要反复执行的代码,假设没有循环结构,这些重复执行的代码需要重复编写,代码无法得到重复使用。所以多数编程语言都是支持循环结构的,将来把需要反复执行的代码片段放到“循环体”,再联合计数器,共同控制这段需要反复执行的代码。
在Java中循环结构分为三种:
- for循环
- while循环
- do…while循环
一、for循环
-
for循环基础语法
/* 1、当前示例主要讲解for循环。for循环的语法结构如下: 语法结构: for(初始化表达式;布尔表达式;更新表达式){ //需要重复执行的代码片段【由java语句构成】 } 2、for循环的执行过程/执行原理【*****】 1、初始化表达式、布尔表达式、更新表达式都不是必须的。【两个分号(;)必须要有】 2、初始化表达式最先执行,并且在整个for循环当中只执行一次。 3、布尔表达式必须是true/false,不能是其他值 4、for循环的执行过程: * 先执行初始化表达式,并且该表达式只执行一次 * 判断布尔表达式的结果是true还是false - 布尔表达式true * 执行循环体 * 执行更新表达式 - 布尔表达式true * 执行循环体 * 执行更新表达式 * 判断布尔表达式 - 布尔表达式false 循环结束 - 布尔表达式false 循环结束 */ public class ForTest01 { public static void main(String[] args){ //使用循环结构代替所有需要反复执行的代码块 //使用循环语句可以使代码量减少 for(int i=0;i<=10;i++){ System.out.println(i); } // 无限循环 for(;;){ System.out.println("无限循环"); } } }
-
for循环中变量的作用域
/* for循环变量的作用域 */ public class ForTest02 { public static void main(String[] args){ // 以下循环中,i变量的作用域仅限于当前循环的内部使用 for(int i=1;i<=10;i++){ System.out.println("i---------->"+i); } // System.out.println(i); //编译错误:找不到i // j变量作用于整个main函数 int j = 0; for(;j<=10;j++){ System.out.println("j++++++>"+j); } System.out.println("j--------->"+j); //11 // k变量也作用域整个main函数 int k; for(k=0;k<=10;k++){ System.out.println("k------"+k); } System.out.println("k+++++++"+k); } }
-
for循环练习
public class ForTest03 { public static void main(String[] args){ // 输出1-10中所有的奇数 for(int i=1;i<=10;i+=2){ System.out.println("i++++++"+i); //1 3 5 7 9 } // 输出1-10中所有的偶数 for(int i=2;i<=10;i+=2){ System.out.println("i---------"+i); //2 4 6 8 10 } // 递减输出 10-1 for(int i=10;i>0;i--){ System.out.println("i======>"+i); //10 9 8 7 6 5 4 3 2 1 } for(int i=100;i>=50;i-=10){ System.out.println("i-------->"+i); } // 以下两个不一样 for(int i=1;i<10;){ System.out.println("i-------->"+i); i++; } for(int i=1;i<10;){ i++; System.out.println("i-------->"+i); } } }
-
for循环案例练习
/* 循环语句和判断语句嵌套使用【for if】 1、判断奇数的两种方法; 优先使用循环次数少的方法 */ public class ForTest04 { public static void main(String[] args){ for(int i=1;i<=10;i+=2){ System.out.println(i+"是奇数"); } System.out.println("-----------------"); // 找出1~10中所有的奇数 for(int i=1;i<=10;i++){ if(i%2==1){ System.out.println(i+"是奇数"); } } } }
-
输出100以内奇数的和
public class ForTest05 { public static void main(String[] args){ int j = 0; for(int i=1;i<=100;i+=2){ // i一定是奇数 // 累加求和 j += i; } // 整个循环结束之后,输出和的值 System.out.println("100以内奇数的和为:"+j); } }
-
双重循环输出9*9乘法表
public class ForTest05 { public static void main(String[] args){ for(int i=1;i<10;i++){ for(int j=1;j<=i;j++){ System.out.print(j+"*"+i+"="+i*j+'\t'); } System.out.println(); // 输出一个换行 } } }
-
输出1~10000中的所有素数
/* 编写for循环找出1~10000中所有的素数 要求每8个换一行 */ public class ForTest07 { public static void main(String[] args){ int count = 0; for(int i=2;i<=10000;i++){ //设置标志位 boolean isSushu = true; for(int j=2;j<=i/2;j++){ if(i%j == 0){ isSushu = false; break; } } // 第一种方法,使用三目运算符 // System.out.println(isSushu ?i+"是素数":i+"不是素数"); //第二种方法 if(isSushu){ System.out.print(i+"\t"); count++; if (count%8==0) { System.out.println(); } } } System.out.println("素数共有:"+count); } }
二、while循环
-
while循环基础语法
/* while循环语句: 1、while循环的语法结构 while(布尔表达式){ 循环体 } 2、while循环的执行原理 先判断布尔表达式的结果: * true 执行循环体 * 判断布尔表达式的结果 * true ... * false ... * false - 循环结束 3、while循环的循环次数 0 ~ N次 注意:while循环的循环体可能执行次数为0次 */ public class WhileTest01 { public static void main(String[] args){ //无限循环 /* while (true) { System.out.println("hello"); } // 编译器检测到该程序永远都无法被访问 // 错误: 无法访问的语句 System.out.println("world!"); */ int i = 10; int j = 3; // 改为10>3时,无限循环下边的代码就会编译报错 while(i>j){ System.out.println("呵呵"); } // 以下程序不会编译报错 System.out.println("Hello World"); } }
-
练习:while循环输出1~10
/* 使用while循环输出1~10 */ public class WhileTest02 { public static void main(String[] args){ int i = 1; while(i<=10){ System.out.println("i----->"+i);//1 2 3 4 5 6 7 8 9 10 i++; } System.out.println("end---->"+i); System.out.println("-------------------------->"); int j = 10; while(j>0){ System.out.println(j--);//10 9 8 7 6 5 4 3 2 1 } System.out.println("end j------>"+j); int k = 10; while(k >= 0){ System.out.println(--k);//9 8 7 6 5 4 3 2 1 0 -1 } System.out.println("end k------>"+k); } }
三、do…while循环
/*
do...while循环:
1、do...while循环的语法结构
do{
循环体;
}while(布尔表达式);
2、do...while循环的执行原理
3、do...while循环的执行次数:
循环体代码片段执行次数是:1-N次【至少1次】
4、使用do...while循环的注意事项:
do...while循环语句最终有一个"分号(;)"
*/
public class DoWhileTest01
{
public static void main(String[] args){
int i =10;
do{
//至少执行一次
System.out.println("i------->"+i);
i++;
}while(i>100);
System.out.println("--------------");
// 完整的do...while语句
int j = 1;
do{
System.out.println("j-------->"+j);
j++;
}while(j<10);
}
}
四、break用法
break表示终止循环,可以终结当前循环,也可以终止某个命名的循环。
/*
break语句:
1、break是java语句当中的关键字,被翻译为“终端/折断”
2、break + ";"可以成为一个单独的完整的java语句: break;
3、break语句使用在switch语句当中,用来终止switch语句执行。
4、break语句同样可以使用在循环体中,用来终止循环的执行。
5、break可以终止哪个循环呢?
6、使用在for、while、do...while循环语句当中,当某个条件成立时,
用来跳出循环。
7、默认情况下:break中断最近的循环语句,
可以给循环命名,使break中断某个循环
*/
public class BreakTest01
{
public static void main(String[] args){
// 1、单个循环
for(int i=0;i<10;i++){
if(i==5){
// 当 i=5 时跳出循环
break;
}
System.out.println("i------->"+i);
}
// 分割线
System.out.println("————————————————————————————————>");
// 2、双层循环终止当前循环
for(int j=0;j<3;j++){
for(int k=0;k<10;k++){
if(k==5){
break;
}
System.out.println("k----------"+k);
}
}
System.out.println("-------------------");
//3、给循环命名
for1:for(int j=0;j<3;j++){
for2:for(int k=0;k<10;k++){
if(k==5){
break for1;
}
System.out.println("k----------"+k);
}
}
System.out.println("Hello world!-----------");
}
}
五、continue用法
continue表示终结本次循环,在continue之后的代码不再执行。
/*
continue语句:
1、continue表示:继续下一次循环
2、continue也是一个continue关键字加一个分号(;)构成的一个单独的完整的java语句,
主要出现循环语句当中用来控制循环的次数
3、break和continue的区别:
* break 表示循环不再执行
* continue表示中断本次循环,继续下一次循环
* continue 也可以加循环名称
*/
public class ContinueTest01
{
public static void main(String[] args){
// 1、break语句
for(int i=0;i<5;i++){
if(i==3){
break;
}
System.out.println("i------"+i);
}
System.out.println("---------------------");
// 2、continue
for(int i=0;i<5;i++){
if(i==3){
continue;
}
System.out.println("i------"+i);
}
System.out.println("----------------------");
// 3、continue 加循环名称
for1:for(int j=0;j<5;j++){
for2:for(int i=0;i<5;i++){
if(i==3){
continue for1;
}
System.out.println("i------"+i);
}
System.out.println("j+++++++++"+j);
}
}
}