一.复合语句
与C语言及其他语言相同,Java语言的复合语句是以整个块区为单位的语句,所以又称块语句。复合语句由开括号“{”开始,闭括号“}”结束。
在前面的学习中我们已经接触到了这种复合语句。例如,在定义一个类或方法时,类体就是以“{”与“}”作为开始与结束的标记,方法体同样也是以“{”与“}”作为标记。复合语句中的每个语句都是从上到下被执行。复合语句以整个块为单位,能够用在任何一个单独语句可以使用的地方,并且在复合语句中还可以嵌套复合语句。
例如,下面这段代码,在主方法中定义了复合语句块,复合语句块中还可以包含另一复合语句块。
![](https://i-blog.csdnimg.cn/blog_migrate/a9c827b7725e9c8812d56740140fcc3b.png)
二.条件语句
if条件语句
if 条件语句是一个重要的编程语句,用于告诉程序在某个条件成立的情况下执行某段语句,而在另一种情况下执行另外的语句。
使用if条件语句,可选择是否要执行紧跟在条件之后的那个语句。关键字if之后是作为条件的“布尔表达式”。如果该表达式返回的结果为true,则执行其后的语句;如果为false,则不执行if条件之后的语句。if条件语句可分为简单的if条件语句、if..else语句和if...else if多分支语句。
简单的if条件语句的执行过程如下图所示:
![](https://i-blog.csdnimg.cn/blog_migrate/dbb747014f3b5c7a11c7720cc6484c5f.png)
流程图
![](https://i-blog.csdnimg.cn/blog_migrate/767fe272ecd1e48e4fba2f641b70a597.png)
if...else语句
if..else语句是条件语句中最常用的一种形式,它会针对某种条件有选择地做出处理。通常表现为“如果满足某种条件,就进行某种处理,否则就进行另一种处理”。语法如下:
if(条件表达式){
语句序列1
}else{
语句序列2
}
if后面“()”内的表达式的值必须是boolean型的。如果表达式的值为true,则执行紧跟if语句的复合语句;如果表达式的值为false,则执行else后面的复合语句。
同简单的if条件语句一样,如果if...else语句的语句序列中只有一条语句(不包括注释),则可以省略该语句序列外面的“{}”。有时为了编程的需要,else或if后面的“{}”中可以没有语句。
下面是使用if...else语句校验密码的示例:
![](https://i-blog.csdnimg.cn/blog_migrate/5e41c2d38a53e407f02cc575de770e7e.png)
流程图
![](https://i-blog.csdnimg.cn/blog_migrate/e9c0e0eb8ad01cded945c60b9bb89e55.png)
if...else if多分支语句
if...else if多分支语句用于针对某一事件的多种情况进行处理。通常表现为“如果满足某种条件,就进行某种处理,否则如果满足另一种条件则执行另一种处理”。语法如下:
if(条件表达式1){
语句序列1
} else if(条件表达式 2){
语句序列2
}
...
else if(条件表达式n){
语句序列n
}
以下为if...else if语句实现饭店座位分配的示例:
![](https://i-blog.csdnimg.cn/blog_migrate/a247f7bde5fabbd3604ef066f790374a.png)
流程图
![](https://i-blog.csdnimg.cn/blog_migrate/451d9831189f3bd18db6b5684e44b683.png)
switch多分支语句
switch语句中表达式的值必须是整型、字符型、字符串类型或枚举类型,常量值1~n的数据类型必须与表达式的值的类型相同。
switch语句首先计算表达式的值,如果表达式的计算结果和某个case后面的常量值相同,则执行该case语句后的若干个语句直到遇到break 语句为止。此时,如果该case语句中没有break 语句,将继续执行后面case中的若干个语句,直到遇到break 语句为止。若没有一个常量的值与表达式的值相同,则执行default后面的语句。default语句为可选的,如果它不存在,且switch语句中表达式的值不与任何case的常量值相同,switch语句则不做任何处理。
以下为使用switch语句为考试分数分级的示例:
![](https://i-blog.csdnimg.cn/blog_migrate/6c7899a80ad709de648b43f6cedc54bb.png)
流程图
![](https://i-blog.csdnimg.cn/blog_migrate/e790fae3872a4d118e1d9e63e6f08393.png)
三.循环语句
while语句
while语句也称条件判断语句,它的循环方式为利用一个条件来控制是否要继续反复执行这个语句。语法如下:
while (条件表达式){
语句序列
}
当条件表达式的返回值为真时,则执行“{}”中的语句,当执行完“{}”中的语句后,重新判断条件表达式的返回值,直到表达式返回的结果为假时,退出循环。
以下为使用while循环语句计算1~1000的相加结果:
![](https://i-blog.csdnimg.cn/blog_migrate/5658dd1402fdfec34241f7e82cfd87df.png)
流程图:
![](https://i-blog.csdnimg.cn/blog_migrate/dc1bf8928be7f94a0031e8a86e185c87.png)
do...while循环语句
do...while循环语句与while循环语句类似,它们之间的区别是while语句为先判断条件是否成立再执行循环体,而do...while循环语句则先执行一次循环后,再判断条件是否成立。也就是说,do...while循环语句“{}”中的程序段至少要被执行一次。语法如下:
do{
语句序列
}while(条件表达式);
以下为使用do...while语句进行用户登录验证:
![](https://i-blog.csdnimg.cn/blog_migrate/24febc354983bb36f99df01235a4721b.png)
流程图:
![](https://i-blog.csdnimg.cn/blog_migrate/66d634a3dbdfecd6bbf6f7d8a55af71d.png)
for循环语句
for循环是Java程序设计中最有用的循环语句之一。一个for循环可以用来重复执行某条语句,直到某个条件得到满足。
传统的for语句中有3个表达式,其语法如下:
for(表达式1;表达式2;表达式3){
语句序列
}
在执行for循环时,首先执行表达式1,完成某一变量的初始化工作;下一步判断表达式2的值,若表达式2的值为true,则进入循环体;在执行完循环体后紧接着计算表达式3,这部分通常是增加或减少循环控制变量的一个表达式。这样一轮循环就结束了。第二轮循环从计算表达式2开始,若表达式2返回true,则继续循环,否则跳出整个for语句。
以下为使用for循环计算2~100所有偶数之和:
![](https://i-blog.csdnimg.cn/blog_migrate/75a18cca19d9be0f7b13bf033cc4ac31.png)
流程图
![](https://i-blog.csdnimg.cn/blog_migrate/9709f392d11561e4881a3d59bd0e648a.png)
四.循环控制
循环控制包含两方面的内容,一方面是控制循环变量的变化方式,另一方面是控制循环的跳转。
控制循环的跳转需要用到break和continue两个关键字,这两条跳转语句的跳转效果不同,break 语句
是中断循环,continue语句是执行下一次循环。
break语句
使用break语句可以跳出switch结构。在循环结构中,同样也可用break语句跳出当前循环体,从
而中断当前循环。
以下为使用break语句跳出for循环从而输出1~20出现的第一个偶数:
![](https://i-blog.csdnimg.cn/blog_migrate/a743f213dd1db5d05b4b2b696f41b895.png)
流程图
![](https://i-blog.csdnimg.cn/blog_migrate/6fe0c5ae2cc2687ce7771d28562d4b79.png)
使用标签让break结束外层循环:
![](https://i-blog.csdnimg.cn/blog_migrate/4895892f29170a7ca353f23c6afdacce.png)
流程图
![](https://i-blog.csdnimg.cn/blog_migrate/9d665001c1c27fd9b65a4b6aa90f015d.png)
continue语句
continue 语句是针对break 语句的补充。continue不是立即跳出循环体,而是跳过本次循环,回到循环的条件测试部分,重新开始执行循环。在for循环语句中遇到continue后,首先执行循环的增量部分,然后进行条件测试。在while和do...while循环中,continue语句使控制直接回到条件测试部分。
以下为使用continue语句跳过for循环输出1~20的奇数:
![](https://i-blog.csdnimg.cn/blog_migrate/78fb6e0aecd90abc7def9e4cff6cff90.png)
流程图
![](https://i-blog.csdnimg.cn/blog_migrate/69aa87cb78267263d7d0df156d54e49c.png)