Java基础-学习笔记(四)-流程控制
1、顺序结构 if语句
if(表达式){执行语句块}(变量=布尔表达式?语句1:语句2 表达式为真则执行语句1,反之执行语句2)
if(表达式){执行语句块} else {}
if(表达式1){执行语句块} else if(表达式2){}else
if语句也可以嵌套在if语句中,else与上文中最近的if匹配
2、选择结构 switch语句
看着下面的代码,也真是醉了,我咋能写出这样的~不过从中也可以吸取点教训,case后面跟的只能是常量,switch后面的表达式可以接受byte、short、int、char型
1 public static void main(String agrs[]) 2 { 3 int grade=85; 4 switch(grade) 5 { 6 /*case(grade < 60)://报错 不兼容的类型: boolean无法转换为int (case后面必须是常量) 7 System.out.println("You are unpassed!");*/ 8 case 1://傻帽!grade是85,肯定是不等于1啊,怎么可能去执行if语句,最后输出结果肯定是It's Wrong! 9 if(grade<60) 10 System.out.println("You are unpassed!"); 11 case 2: 12 if((grade>60)&&(grade<80)) 13 System.out.println("You got B!"); 14 case 3: 15 if((grade>80)&&(grade<=100)) 16 System.out.println("You got A!"); 17 default: 18 System.out.println("It's Wrong!"); 19 } 20 }
再写一个正确的
1 public static void main(String agrs[]) 2 { 3 int x=3; 4 switch(x) 5 { 6 case 1: 7 System.out.println("It's Monday"); 8 case 2: 9 System.out.println("It's Tuesday"); 10 case 3: 11 System.out.println("It's Wednesday"); 12 case 4: 13 System.out.println("It's Thursday"); 14 case 5: 15 System.out.println("It's Friday"); 16 default: 17 System.out.println("It's Weekend!"); 18 } 19 }
输出结果:
It's Wednesday
It's Thursday
It's Friday
It's Weekend!
说明switch中一旦碰到满足条件的case,不仅执行完该case中的语句,还顺序执行其后面的内容,为了避免这个问题,需要在每个case的语句后加上break跳出循环
1 public static void main(String agrs[]) 2 { 3 int x=3; 4 switch(x) 5 { 6 case 1: 7 System.out.println("It's Monday"); 8 case 2: 9 System.out.println("It's Tuesday"); 10 case 3: 11 case 4: 12 System.out.println("It's Thursday"); 13 break; 14 case 5: 15 System.out.println("It's Friday"); 16 default: 17 System.out.println("It's Weekend!"); 18 } 19 }//输出It's Thursday
从上面代码中可以看到,加了break就可以跳出循环,并且,还说明了一个问题,就是,当多种情况下要执行的语句是一样的,我们可以如上所示操作,将3、4共用同一语句块
3、循环语句
while(表达式){语句}//当表达式为真,则执行语句
do
{
语句
}while(表达式); //先执行语句,在执行while中的表达式,若为真,则继续执行语句,直至表达式为假
for(初始化表达式;循环条件表达式;循环后的操作表达式)循环体
break 跳出当前循环体
continue 跳出当前循环语句,接着执行下一次的循环
1 public static void main(String agrs[]) 2 { 3 int i=1; 4 for(;i<11;i++) 5 { 6 if(i%3==0) 7 break; 8 System.out.println(i); 9 } 10 }//输出1,2
1 public static void main(String agrs[]) 2 { 3 int i=1; 4 for(;i<11;i++) 5 { 6 if(i%3==0) 7 continue; 8 System.out.println(i); 9 } 10 }//输出1,2,4,5,7,8,10
ps:当break被标记,如下所示,执行完break st后,程序会跳出最外层while(即被标记的while循环),慎用~
st:while(true)
{
while(true)
{
break st;
}
}