一、块作用域
由一对花括号括起来的若干条简单的Java语句构成一个基本的块作用域,一个块中也可以存在一个内部的块。
二、条件判断
1、if 判断
(1)、if ( boolean-exp ) { statement }
boolean-exp为true执行这个块中的statement,否则不执行,直接跳过。
(2)、if ( boolean-exp ) { statement1 } else { statement2 }
boolean-exp为true执行 statement1语句块,否则执行 statement2语句块。
(3)、if ( boolean-exp1 ) { statement1 } else if ( boolean-exp2 ) { statement2 }... else if( boolean-exp-n ) { statement-n } else { statement-final }
boolean-exp1为true执行statement1语句块,跳过后面的条件判断和语句块; 若boolean-exp1为false,boolean-exp2为true执行statement2语句块,跳过后面的条件判断和语句块;以此类推。如果所有的if后的布尔表达式都为false,则执行最后的statement-final语句块,没有else语句块则不执行任何语句。
2、多重选择 switch 语句
switch( 表达式 ){case 表达式1:语句1;case表达式2:语句2;...;case表达式n:语句n;default:语句n+1;}
表达式与表达式n匹配时,执行表达式n,和所有的case后面的表达式都不匹配时,执行default后的默认语句。默认每个case的表达式都判断一次是否匹配。可以在表达式对应语句后面使用break;执行到break语句可以跳出这个switch结构,不再执行这个switch结构中break后面的语句。
三、循环迭代
1、while 循环:while ( boolean-exp ) { statement }
先判断布尔表达式是否为true,如果为true,执行statement语句并进入下一次循环,否则退出这个循环体。每次循环先判断布尔表达式的值,布尔表达式为true后再执行statement语句。
2、do while 循环:do { statement } while (boolean-exp)
先执行statement语句块,再判断布尔表达式是否为true,如果为true,并进入下一次循环,否则退出这个循环体。每次循环先执行statement语句块,再判断布尔表达式的值。
3、for 循环: for (初始化语句;布尔表达式;步进语句) { statement }
初始化语句先执行(这个初始化语句只会执行一次;后面的循环迭代中不再初始化),再判断布尔表达式是否为true,为true则执行statement循环体和步进语句并进入下一次循环,为false时退出循环。
4、forecah循环:for(变量类型 变量 : 变量元素集合) { statement }
将集合中的每一个元素依次 赋值给变量 并执行一次statement语句块。
5、循环跳出中断语句
(1)、break:跳出break这层循环块,不执行循环后面语句,终止循环。
(2)、continue:跳出本次循环,不再执行循环体后面的语句,(for循环迭代先执行步进语句)进行下一轮循环判断。
(3)、break标签和continue标签:
break标签:标签只能用在 break + 标签名 所在的循环块或所在的循环块的外部循环块之前。 如 label: for () { break label; } 或者 label: for (){ for () { break label;} }
执行 break label;直接中断循环并跳出到 label:不再执行lael后的循环体,终止了循环。主要用来中断多层嵌套循环,而break语句只能中断break语句所在的这层循环体的循环迭代。
代码示例与输出结果:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
public static void main(String[] args) { label: for(int i=1;i<5;i=i+1){ for(int j=1;j<5;j++) { System.out.println("正在执行外层循环第 "+i+" 次迭代" + " 内层循环第 "+j+" 次迭代"); break label; } } }
continue标签:标签只能用在 continue+ 标签名 所在的循环块或所在的循环块的外部循环块之前。 如 label: for () { continue lebel; } 或者 label: for (){ for () { continue lebel;} }
执行 continue label;直接中断循环并跳出到 "label:" 并对 "label:" 下面的循环体直接进行下一次迭代。主要用来退出内层循环,并直接对外层循环进行迭代。 而continue语句只能退出continue语句所在的这层循环体,对这层循环体进行下一次迭代。
代码示例与输出结果:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 public static void main(String[] args) { 2 label: 3 for(int i=1;i<5;i=i+1){ 4 for(int j=1;j<5;j++) { 5 System.out.println("正在执行外层循环第 "+i+" 次迭代" + " 内层循环第 "+j+" 次迭代"); 6 continue label; 7 } 8 } 9 }