1、流程控制语句说明
简介: 程序通过流程控制语句完成对语句执行顺序的控制,如循环执行
,选择执行
等。流程控制语句可以分为三大类:选择、循环、跳转。
1.1、选择语句
简介: 选择语句的作用是根据判断条件选择执行不同的程序代码。其主要包括if-else
、if - else if - else
以及switch
语句。
1.1.1、if-else语句
语法格式:
if(布尔表达式){
//code block 1
}else{
//code block 2
}
if-else语句的执行过程: 如果布尔表达式为true
,就执行代码块1,否则执行代码块2;(其中,else是可选的,也就是说,else语句可以不写,这种情况的出现还是很频繁的,有时候我们写代码只需要满足某个条件去执行相关语句,并不需要不满足的情况,所以一般都是不写的
)
1.1.2、if-else if-else语句
语法格式:
if(布尔表达式1){
//code block 1
}else if(布尔表达式2){
//code block 2
}esle if(布尔表达式3){
//code block 3
}else if(布尔表达式n){
//code block n
}else{
//code block
}
if-esle if-else语句执行过程: 程序依次判断布尔表达式,如果为true
,那么就执行与之相对于的代码块,而后面的布尔表达式全部忽略
;如果所有的布尔表达式都为false
,就执行else对应的代码块
1.1.3、switch-case
语法格式:
switch(表达式){
case 选择值1:
code block 1
break;
case 选择值2
code block 2
break;
case 选择值n
code block n
break
default:
code block
}
switch-case语句表达式说明: switch的表达式可以是byte、short、char、int
类型中的一种;case的值必须是于switch表达式类型一致的常量,并且不能重复。
switch-case语句的执行过程: switch表达式的值与case的常量值依次比较,如果相等,就执行相应case后面的所有代码(注意:如果在case语句的代码块中没有加break语句,那么程序就会穿透到下一层case,无论下一层的case是否满足选择值与表达式的值相等,都会执行该case的代码块,直到执行完default的代码块)
;
1.1.4、选择语句的嵌套
- if-else的嵌套:
(可以用if-esle if表示该嵌套)
public static void main(String[] args){
int number = 10;
if(number<10 && number>0){
if(number>3){
System.out.println("HelloWorld!");
}
}
}
- if-else-if的嵌套:
没意义,不推荐使用
public static void main(String[] args){
int number = 10;
if(number<20){
if(number>3){
System.out.println("HelloWorld!");
}
}else if(number<10){
System.out.println("HaHa~~~");
}
}
- switch的嵌套:
(感觉也没什么作用,平常不太用的到)
public static void main(String[] args){
int number = 10;
int day = 5;
switch(number){
case 1:
switch(day){
case 1:
System.out.println("Hello");break;
default:
System.out.printf("结束");
}
break;
default:
System.out.printf("结束");
}
}
1.2、循环语句
简介: 循环语句 的作用是反复执行一段代码,直到不能满足循环条件为止;循环语句包括for语句、while语句和do-while语句
。
1.2.1、for循环
语法格式:
for(初始化:循环条件:迭代部分){
//code block
}
从理论上来说,初始化、循环条件以及迭代部分都是可选的。如果程序代码块中没有跳转语句,那么就会形成一个死循环:
public static void st2(){
int day=1;//初始化部分
for(;;){
if(day==7){ //循环条件
System.out.println("放假");
break;
}
System.out.printf("星期%d,上学\n",day);
day++;//迭代部分
}
}
1.2.2、foreach(扩充)
JDk1.5后为了方便数组的输出,提供了foreach语法,格式如下:
for(数据类型 变量名:数组名称){
//code block
}
案例:使用foreach语法输出数组的内容。
public static void main(String[] args){
int arr[] = new int[]{1,2,3,4,5};
for(int i:arr){
System.out.printf("%d",arr[i]);//这里的i就是数组中的每一个元素,i的数据类型必须和数组中的元素类型一致
}
}
1.2.3、while循环
语法格式:
while(循环条件){
//code block
}
while循环的执行过程: 首先判断是否满足循环条件,如果满足就执行循环体中的代码块;如果不满足,就结束循环。
案例:while输出1-10
public static void main(String[] args){
int i = 1;
while(i<=10){
System.out.pribtf("%d",i);
i++;
}
1.2.4、do-while循环
语法格式:
do{
//code block
}while(循环条件)
do-while的执行过程: 首先执行一遍循环体,然后根据循环条件进行判断,如果满足循环条件,则再次执行循环体;如果不满足,则退出循环。
案例:使用do-while输出1-10
public static void main(String[] args){
int number = 0;
do{
number++;
System.out.printf("%d",number);
}while(number<10);
}
1.3、跳转\中断语句
简介: 对执行一定程度的循环进行中断处理,不再执行后面的语句。
1.3.1、break语句
break语句简介: break语句可以强迫程序中断循环。当程序执行到break语句,就会跳出当前的循环,继续执行循环外面的程序(注意:如果break出现在一个嵌套循环的内层循环中,那么break语句只能终止当前循环,对外层的循环并不影响)
;
案例:定义一个变量i=0,让其进行自增,当i=3的时候,结束程序
public static void main(String[] args){
int i = 0;
for(;;){
if(i==3) break;
i++;
}
}
从运行的结果可以看出,当i=3的时候,循环就结束了。
1.3.2、continue语句
continue语句简介: continue语句可以强制程序跳转到起始处。当程序运行到continue语句时,会停止运行剩余的循环体,回到循环的开始处继续执行。
案例:打印1-10里面的奇数
public static void main(String[] args){
int i = 1;
for(;i<=10;i++){
if(i%2==0) continue;
System.out.printf("%d",i);
}
}
从程序的运行结果可以看出,当i为偶数时,程序并没有向下继续执行,而是回到了循环判断处继续向下执行,也就是说,continue只是中断了一次循环操作。