1 条件语句
1.1 简单的if条件语句
if语句可分为简单的if语句;if...else语句;if...else if多分支语句。
语法:
if(布尔表达式){ 语句序列 }
注意:
(1) 布尔表达式:必要参数,可以是一个单纯的布尔值变量或常量,也可以是使用关系或布尔运算符的表达式。
(2)语句序列 :可选参数,可以是一条或者多条语句。
1.2 if...else语句
if...else语句是条件语句中最常用的一种形式,它会针对某种条件有选择地作出处理。通常表现为“如果满足某种条件,就进行某种处理,否则进行另一种处理”。
语法:
if(表达式){ 若干语句 } else{ 若干语句 }
if后面“()”内的表达式必须是boolean型的。如果表达式值为true,则执行紧跟if后面的复合语句;如果表达式为false,则执行else后面的复合语句。
注意:if...else语句有时可以使用三元运算符简化代码。
1.3 if...else if多分支语句
if...else if多分支语句针对某一事物的多种情况进行处理。
语法:
if(条件表达式1){ 语句序列1 } else if(条件表达式2){ 语句序列2 } ... else if(条件表达式n){ 语句序列n }
注意:
(1)条件表达式1~条件表达式n:必要参数。可以由多个表达式组成,但最后返回的结果一定要为boolean类型。
(2)语句序列:可以是一条或者多条语句,当条件表达式那个为真,执行哪个语句序列。
1.4 switch语句
switch(表达式){ case常量值1: 语句块1 [break;] ........ case常量值n: 语句块n [break;] default: 语句块n+1 [break;] }
switch语句中表达式的值必须是整数、字符型或字符串类型,常量值1~n必须也是整数、字符型和字符串类型。switch语句先计算表达式的值,如果表达式的值和某个case后面的常量值相同,则执行case语句后的若干语句直到break语句为止。如果该case语句中没有break语句,将继续执行后面case中的若干语句,直到遇到break语句为止。若没有一个常量的值与表达式的值相同,则执行default后面的语句。default语句为可选的,如果它不存在,且switch语句中表达式的值不与任何case的常量值相同,switch不做任何处理。
2 循环语句
2.1 while语句
while语句也称为条件判断语句,它的循环方式为利用一个条件来控制是否要继续反复执行这个语句。
语法:
while(条件表达式){ 执行语句 }
当条件表达式为真的时候,会执行语句;直到条件表达式为假的时候,退出循环。
2.2 do...while循环语句
do...while语句与while循环语句类似,区别是while语句先判断条件后执行,do...while语句先执行一次循环后,再判断条是否成立。也就是说do..while语句至少执行一次。
语法:
do{ 执行语句 } while(条件表达式);
2.3 for循环语句
for循环可以用来重复执行某条语句,直到某个条件得到满足。在java5以后增加了foreach语法。
(1)for语句
语法:
for(表达式1;表达式2;表达式3){ 语句序列 }
I.表达式1:初始化表达式,负责完成变量的初始化。
II.表达式2:循环条件表达式,值为boolean型的表达式,指定循环条件。
III.表达式3:循环后操作表达式,负责修整变量,改变循环条件。
执行流程:在执行for循环时,首先执行表达式1,完成某一变量的初始化工作;下一步判断表达式2的值,若表达式2的值为true,进入循环体;在执行完循环体后计算表达式3,这部分是增加或减少循环控制变量的一个表达式。这样一个循环就结束了。第二轮循环从表达式2开始,若表达式2返回true,继续循环,否则跳出整个for语句。
执行控制图:
例子:
public class Demo { //计算1-100所有偶数的和 public static void main(String[] args) { int sum=0; for(int i=2;i<=100;i+=2) { sum=sum+i; } System.out.println("1到100之间所有的偶数和为:"+sum); } }1到100之间所有的偶数和为:2550
(2)foreach语句
foreach语句是for语句的特殊简化版本,不能完全取代for语句,但任何foreach语句都可以改写为for语句版本。foreach并不是一个关键字,在遍历数组等方面提供了很大的方便。
语法:
for(元素变量x:遍历对象obj){ 引用了x的java语句; }
public class Demo { public static void main(String[] args) { int []arry= {7,10,8,1,3}; System.out.println("一位数组的元素分别为:"); for(int x:arry) { //x代表输出的引用变量,arry指定要循环的遍历数组 System.out.println(x+“,”); } } }
一位数组的元素分别为:
7,10,8,1,3,
3 循环控制
循环控制包括两方面内容,一方面是控制循环变量的变化方式,另一方面是控制循环的跳转。控制循环的跳转需要用到break和continue两个关键字,这两条跳转语句的跳转效果不同,break是中断循环,continue是执行下一次循环。
3.1 break语句
使用break语句可以跳出switch语句和循环语句。
break语句的使用形式:
注意:如果遇到循环嵌套的情况,break语句只会使程序流程跳出包含它的最内层的循环结构,只跳出一层循环。
循环嵌套:我的理解是如果把循环嵌套当成绕圈跑步的话,外循环控制的是你跑几次,内循环控制的是每一次需要跑几圈。
public class Demo { //使用break跳出内循环 public static void main(String[] args) { for(int i=0;i<3;i++) { for(int j=0;j<5;j++) { if(j==3) { break; } System.out.println("i="+i+",j="+j); } } } }
i=0,j=0
i=0,j=1
i=0,j=2
i=1,j=0
i=1,j=1
i=1,j=2
i=2,j=0
i=2,j=1
i=2,j=2
从结果可以看出:(1)如果j等于3,break就中断了内部循环,输出j值最大到2. (2)外层的循环没有受到影响,输出i的最大值为2,而2正是for循环设定的最大值。
如果想让break跳出外层循环,需要加一个”标签”,语法:
标签名: 循环体{ break 标签名; }
public class Demo { //使用break跳出外循环 public static void main(String[] args) { loop: for(int i=0;i<3;i++) { for(int j=0;j<6;j++) { if(j==3) { break loop; } System.out.println("i="+i+",j="+j); } } } }
i=0,j=0
i=0,j=1
i=0,j=2
由结果可知,当j等于3时,i的值没有增加,直接跳出外层循环。
3.2 continue语句
continue不是立即跳出循环体,而是跳过本次循环结束前的语句,回到循环的条件测试部分,重新开始循环。在for循环语句中遇到continue后,首先执行循环的增量部分,然后进行条件测试。在while和do..while中,continue使控制直接回到条件测试部份。
public class Demo { //输出1-20之间的奇数,使用continue跳出循环 public static void main(String[] args) { for(int i=1;i<20;i++) { if(i%2==0) { continue; } System.out.println(i); } } }