个人主页:橙子
推荐学习专栏:Java 编程进阶之路【从入门到精通】
1. 流程控制结构
程序流程控制结构
是指以某种顺序执行的一系列动作,用于解决某个问题。程序可以通过控制语句来对程序实现选择、循环、转向和返回等流程控制。
程序控制结构包括:顺序结构、分支结构、循环结构。
2. 顺序结构
顾名思义,顺序结构就是程序按照从上到下的顺序执行,程序中的语句只能被执行一次。
示例:
public class Test{
public static void main(String[] args){
System.out.println("Hello");
System.out.println("World");
}
}
/**
* 运行结果
* Hello
* World
*/
在 Java 程序中,JVM 默认总是顺序执行以分号 ;
结束的语句。但是,在实际的代码中,程序经常需要做条件判断,循环等,因此,需要有多种流程控制语句,来实现程序的跳转和循环等功能。
3. 分支结构
和顺序结构不同的是,分支结构可以在执行的过程中进行判断。当程序执行到控制分支的语句时,首先判断条件,根据条件表达式的值选择相应的语句执行(放弃另一部分语句的执行)。
分支结构包括单分支,双分支和多分支三种形式。
3.1 单分支
语法:
if(布尔表达式){语句块;}
只有布尔表达式的值为 true 时,才会继续执行 if 语句块的内容。
示例:
public class Test {
public static void main(String[] args) {
int score=59;
if(score>=60)
System.out.println("考试及格!");
}
}
3.2 双分支
语法:
if(布尔表达式){
语句块;//if分支
}else{
语句块;//else分支
}
当条件表达式的值为真时,执行代码段1,否则执行代码段2。
示例:
public class Test {
public static void main(String[] args) {
int score=59;
if(score>=60)
System.out.println("考试及格!");
else
System.out.println("考试不及格!");
}
}
3.3 多分支 (if-else)
语法:
if(布尔表达式){
语句块;
}else if(布尔表达式){
语句块;
}else{
语句块;
}
示例:
public class Test {
public static void main(String[] args) {
int score=80;
if(score<60)
System.out.println("考试不及格!");
else if(score<80)
System.out.println("考试及格!");
else
System.out.println("考试优秀!");
}
}
3.4 嵌套 if
什么时候会用到嵌套 if 语句来实现分支结构呢?例如,学校举行运动会,百米赛跑跑入10秒内的学生有资格进决赛,根据性别分别进入男子组和女子组。此时,首先判断是否在十秒内,如果是,再判断是男生还是女生,否则,没有进入决赛。
语法:
if(布尔表达式1){
if(布尔表达式2){
语句1;
}else{
语句2;
}
}else{
语句3;
}
示例:
public class Test {
public static void main(String[] args) {
int score=59;
if(score>=60){
if(score<80)
System.out.println("考试及格!");
else
System.out.println("考试优秀!");
}
else
System.out.println("考试不及格!");
}
}
3.5 多分支结构 (switch)
语法:
switch (表达式) {
case 值1:
语句;
break;
case 值2:
语句;
break;
default:
语句;
break;
}
多分支结构用于多种选择的情况,根据输入的情况,与 case 值后面的常量比较,如果相等,则执行后面的代码段,此时一定要记得加上 break 语句跳出 switch 语句,否则将会执行下一个情况的代码段,直到遇到 break 语句。
示例:
public class Test {
public static void main(String[] args) {
int num = 5;
switch (num) {
case 1:
System.out.println("今天是星期一");
break;
case 2:
System.out.println("今天是星期二");
break;
case 3:
System.out.println("今天是星期三");
break;
case 4:
System.out.println("今天是星期四");
break;
case 5:
System.out.println("今天是星期五");
break;
case 6:
System.out.println("今天是星期六");
break;
case 7:
System.out.println("今天是星期日");
break;
default:
System.out.println("输入有误!");
}
}
}
4. 循环结构
当程序执行到循环控制语句时,根据循环判定条件对一组语句重复执行多次。循环结构的三个要素分别是循环变量,循环体和循环终止条件。
我们把循环结构分为三种,分别是 for 循环,while 循环和 do...while 循环。接下来,我们分别来学习者三种循环结构。
4.1 for 循环
语法:
for(表达式1;表达式2;表达式3) {
循环体; //一条或多条语句
}
示例:打印三行 HelloWorld!
public class Test {
public static void main(String[] args) {
for(int i=0;i<3;i++)
System.out.println("HelloWorld!");
}
}
/**
* 运行结果
* HelloWorld!
* HelloWorld!
* HelloWorld!
*/
4.2 while 循环
语法:
while(布尔表达式){
循环体; //一条或多条语句
}
while 循环的逻辑和 for 循环相同,如果布尔表达式的值为真则执行循环体,否则结束循环。
示例:打印三行 HelloWorld!
public class Test {
public static void main(String[] args) {
int i=0;
while(i<3){
System.out.println("HelloWorld!");
i++;
}
}
}
4.3 do...while循环
语法:
do {
循环体;
}while(条件判断表达式);
可以看到,和 while 循环不同的是,do...while 循环要先执行一次代码段,然后再进行条件的判断,如下图:
示例:打印三行 HelloWorld!
public class Test {
public static void main(String[] args) {
int i=0;
do{
System.out.println("HelloWorld!");
i++;
}while(i<3);
}
}
5. 流程跳转
在流程跳转部分主要讲解的是 break 语句,continue 语句和 return 语句。我们先看一看结论:
- break 用于 do-while,while,for,switch中时,可跳出循环而执行循环后面的语句
- continue 用在循环中,跳过本次循环,执行下一次循环
- return 并非专门用于结束循环,它的功能是结束一个方法
5.1 break
示例:
public class Test {
public static void main(String args[]) {
for (int i = 0; i < 10; i++) {
if (i == 3)
break;
System.out.println(" i = " + i);
}
System.out.println("break用于跳出循环结构继而执行循环后面的语句!");
}
}
break 语句用于跳出 for ,while 等循环结构,继而执行循环后面的语句。
5.2 continue
示例:
public class Test {
public static void main(String args[]) {
for (int i = 0; i < 10; i++) {
if (i == 3)
continue;
System.out.println(" i = " + i);
}
}
}
continue 用于多层嵌套的循环结构,且只能用于循环结构。目的是跳出当前的循环执行下一次循环。例如上面的例子,打印 10 以内的整数且不包括数字 3 。
5.3 return
示例:
public class Test {
public static void main(String args[]) {
for (int i = 1; i <= 10; i++) {
for (int j = 1; j <= 10; j++) {
if (i + j == 15) {
return;
}
System.out.println("i = " + i + ",j = " + j + ",i + j = " + (i + j));
}
}
与 break 和 continue 不同的是,return 直接结束整个方法,不管这个 return 处于多少层循环之内。所以上面的例子中,当程序执行到 i = 5,j = 10 时,跳出整个方法,程序结束执行。
Java编程基础教程系列
欢迎订阅学习Java编程进阶之路专栏,专栏文章持续更新!