流程控制语句分类
- 顺序结构
- 分支结构(if , switch)
- 循环结构 (for ,while ,do...while)
顺序结构
顺序结构是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行。
public class Main {
public static void main(String[] args) {
//顺序结构
System.out.println("开始");
System.out.println("执行语句1");
System.out.println("执行语句2");
System.out.println("结束");
}
}
分支语句
if语句格式1
格式:
if(关系表达式){
语句体;
}
执行流程:首先计算关系表达式的值,如果关系表达式的值为true,则执行语句体,如果为false则不执行,然后继续执行后面的语句内容。
public class Main {
public static void main(String[] args) {
//执行
if (true) {
System.out.println("执行语句体1");
}
//不执行
if (false) {
System.out.println("执行语句体2");
}
}
}
if语句格式2
if(关系表达式){
语句体1;
}else{
语句体2
}
执行流程:计算关系表达式的值,如果为true则执行语句体1,如果为false则执行语句体2的内容,然后继续执行之后的内容。
public class Main {
public static void main(String[] args) {
int a = 1;
int b = 2;
if (a==b) {
System.out.println("执行语句体1");
}else{
System.out.println("执行语句体2");
}
}
}
if语句格式3
if(关系表达式1){
语句体1;
}else if(关系表达式2){
语句体2;
}...
else{
语句体n;}
执行流程:先计算关系表达式1的值,如果为true则执行语句体1,如果为false则计算关系表达式2的值,如果为true则执行语句体2,以此类推,最后继续执行之后的内容
public class Main {
public static void main(String[] args) {
int a = 1;
int b = 2;
if (a==b) {
System.out.println("执行语句体1");
}else if(a>b){
System.out.println("执行语句体2");
}else{
System.out.println("执行语句体3");
}
}
}
switch语句
switch(表达式){
case值1:
执行语句:语句体1;
break;
case值2:
执行语句:语句体2;
break;
...
default:语句体n;
break;
}
表达式:可以取值为byte,short,int,long,String等
case:与表达式的值作比较
break:中断,用来结束switch语句
default:表示所有情况都不匹配的时候就执行该处内容
注意:
case的穿透性:假若找到目标值,但是缺未找到break,则继续执行下面的语句直到找到break为止
循环语句:
for(初始化,约束条件,调整){}
while(约束条件){}
do{}while(约束条件)
注意:在for循环条件内定义的循环变量不能够在循环方法体外使用
public static void main(String[] args) {
//switch语句:
int c = 2;
switch (c) {//c的值是2 输出语句应为:选择第二个事件
case 1:
System.out.println("选择第一个事件");
break;
case 2:
System.out.println("选择第二个事件");
break;
case 3:
System.out.println("选择第三个事件");
break;
default:
System.out.println("结束");
break;
}
/* case的穿透性 假若目标值的case事件后没有break,则会一直执行下面语句直到遇见break
值是1 输出语句应为:选择第一个事件
选择第二个事件
选择第三个事件
结束
switch(1){
case 1:
System.out.println("选择第一个事件");
case 2:
System.out.println("选择第二个事件");
case 3:
System.out.println("选择第三个事件");
default:
System.out.println("结束");
break;
}*/
/*循环语句:
for(初始化,约束条件,调整){}
while(约束条件){}
do{}while(约束条件)*/
/* for语句
在for循环条件内定义的循环变量不能够在循环方法体外使用
如下中for循环中所定义的变量q,在for循环方法体外部不能够被使用*/
for (int q = 0; q < 10; q++) {
System.out.println("循环:" + q);
}
//while语句 while(){}与do{}while()等效;
int j = 5;
while (j > 0) {
System.out.println("循环:" + j);
j--;
}
/* do{
System.out.println("循环:"+j);
j--;
}while(j>0);*/
}
循环语句
for循环
先有外层for循环,如果条件成立,进入内层for循环
那么,内层for就开始一直循环,循环到内层for循环结束为止,比较返回false
外层for循环再循环一次,比较成立,进入内层for循环
public static void main(String[] args) {
for(int i=0;i<10;i++) {
System.out.println("i: "+i);
for(int j=0;j<10;j++){
System.out.print("j: "+j+" ");
}
System.out.println();
}
}
注意:
break:在switch中结束选择语句的
在循环中,是结束整个循环的
continue:跳出了本次循环,进入下一次循环
public static void main(String[] args) {
//break在循环中结束整个循环
for (int i = 0; i < 5; i++) {
if (i == 3) break;
System.out.println(i);
}
//break在switch中结束选择语句
int c = 2;
switch (c) {//c的值是2 输出语句应为:选择第二个事件
case 1:
System.out.println("选择第一个事件");
break;
case 2:
System.out.println("选择第二个事件");
break;
case 3:
System.out.println("选择第三个事件");
break;
default:
System.out.println("结束");
break;
}
//continue:跳出了本次循环,进入下一次循环
for (int i = 0; i < 5; i++) {
if (i == 2) continue;
System.out.println(i);
}
}
例子:找水仙花数
水仙花数是一个三位数,而且其个位十位百位的数字立方和等于原数
例:153=1*1*1+5*5*5+3*3*3
public class Main {
public static void main(String[] args) {
//水仙花数是一个三位数,而且其个位十位百位的数字立方和等于原数
//找出100到200之间的水仙花数
int n = 200;
for (int i = 100; i < n; i++) {
int x, y, z;
int j = i;
x = j / 100;
y = (j - 100) / 10;
z = j % 10;
if ((x * x * x + y * y * y + z * z * z) == j) {
System.out.println(j);
}
}
}
}
while语句
格式
初始化语句
while(条件判断语句){
循环体语句;
条件控制语句;
}
执行流程:1、先执行初始化语句,2、执行条件判断语句,如果是false则循环结束,如果是true则继续执行,3、执行循环体语句,4、执行条件控制语句,5、继续执行2条件判断语句
public class Main {
public static void main(String[] args) {
int i = 0;
while (i < 5) {
System.out.println("执行" + i);
++i;
}
//等价于
for (int j = 0; j < 5; j++) {
System.out.println("执行"+j);
}
}
}
do...while循环语句
格式:
初始化语句;
do{
循环体语句;
条件控制语句;
}while(条件判断语句);
执行流程:1、执行初始化与语句 2、执行循环体语句 3、执行条件控制语句 4、执行条件判断语句,如果是false则循环结束,如果为true则继续执行 5、回到2 继续执行循环体语句
public class Main {
public static void main(String[] args) {
//注意do..while循环语句中,至少会执行一次语句体
int i = 0;
do {
i++;
System.out.println("HelloWorld!");
} while (i < 5);
}
}
三种循环的区别:
for循环和while循环是先执行判断条件是否成立,然后在执行
do...while循环是先执行一次循环体,才判断条件是否成立