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 classDemo {//计算1-100所有偶数的和
public static voidmain(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 classDemo {public static voidmain(String[] args) {int []arry= {7,10,8,1,3};
System.out.println(“一位数组的元素分别为:”);for(intx: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 classDemo {//使用break跳出内循环
public static voidmain(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 classDemo {//使用break跳出外循环
public static voidmain(String[] args) {
loop:for(int i=0;i<3;i++) {for(int j=0;j<6;j++) {if(j==3) {breakloop;
}
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 classDemo {//输出1-20之间的奇数,使用continue跳出循环
public static voidmain(String[] args) {for(int i=1;i<20;i++) {if(i%2==0) {continue;
}
System.out.println(i);
}
}
}
3.3 if和switch的应用
If:(1)对具体的值进行判断,(2)对区间判断(3)对运算结果是boolean类型的表达式进行判断。
Switch:(1)对具体的值进行判断(2)值的个数通常都是固定的。
补充:switch语句可以运用在byte,short以及其包装类上,而不能应用在long,String等类型上;因为byte,short及其包装类会经过隐式转换成int类型;而long,String类做不到。