在Java中程序有三种结构,分别是顺序结构、分支结构、循环结构。
一、顺序结构
顺序结构顾名思义就是:按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。简单来说,写在前面的先执行,写在后面的后执行。顺序结构是程序中最简单最基本的流程控制,没有特定的语法结构。
二、分支结构
1.if语句
- 基本语法形式1
if(布尔表达式){
//条件满足时执行代码
}
- 基本语法形式2
if(布尔表达式){
//条件满足时执行代码
}else{
//条件不满足时执行代码
}
- 基本语法形式3
if(布尔表达式){
//条件满足时执行代码
}else if(布尔表达式){
//条件满足时执行代码
}else{
//条件都不满足时执行代码
}
在写这种if语句的时候有几个需要注意的点:
1.悬垂else问题
int x = 10;
int y = 10;
if (x == 10)
if (y == 10)
System.out.println("aaa");
else
System.out.println("bbb");
System.out.println("ccc");
/*打印结果
aaa
ccc
*/
if / else 语句中可以不加大括号,也可以写语句(只能写一条语句)。此时 else 是和最接近的 if 匹配。但是实际开发中不建议 这么写, 最好加上大括号 。
2.分号问题
int x = 20;
if (x == 10); {
System.out.println("hehe");
}
// 运行结果
hehe
在判断语句后多写了一个 分号, 导致分号成为了 if 语句的语句体, 而 { } 中的代码已经成为了和一个 if 无关的代码块
2.switch语句
switch(整数|枚举|字符|字符串){
case 内容1 : {
内容满足时执行语句;
[break;]
}
case 内容2 : {
内容满足时执行语句;
[break;]
}
...
default:{
内容都不满足时执行语句;
[break;]
}
}
Switch(语句表达式)
Switch语句表达式中可以填基本数据类型:byte,short,char,int;
引用数据类型:枚举(在JDK1.5引入),string字符串(JDK1.7引入)
int day = 1;
switch(day) {
case 1:
System.out.println("星期一");
case 2:
System.out.println("星期二");
break;
}
// 运行结果
星期一
星期二
我们发现, 不写 break 的时候, case 语句会依次向下执行, 将会失去了多分支的效果 。
注意事项
- case后面只能是常量,不能是变量,而且多个case后面的值互不相同。
- default不建议省略,其作用是对不正确的情况给出提示。
- break不可省略,若省略,会出现case穿透现象,即若无break则程序会继续执行语句直到遇见break语句为止。
三、循环结构
1.while循环
基本语法格式:
while(循环条件){
循环语句;
}
代码示例:计算 1 - 100 的和
int n = 1;
int result = 0;
while (n <= 100) {
result += n;
n++;
}
System.out.println(num);
// 执行结果
5050
2.for循环
基本语法:
for(表达式1;表达式2;表达式3){
循环体;
}
- 表达式1: 用于初始化循环变量.
- 表达式2: 循环条件
- 表达式3: 更新循环变量
优势:相比于 while 循环, for 循环将这三个部分合并在一起, 写代码时不容易遗漏 。
代码示例:计算 1 - 100 的和 。
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum += i;
}
System.out.println("sum = " + sum);
// 执行结果
5050
3.do while循环
基本语法:
do{
循环语句;
}while(循环条件);
与while循环不同之处在于:先执行循环语句, 再判定循环条件 。
代码示例:打印1-10
int num = 1;
do {
System.out.println(num);
num++;
} while (num <= 10)
4.关于break和continue
1.break
break的作用是跳出当前循环;但是如果是嵌套循环,则只能跳出当前的这一层循环,只有逐层break才能跳出所有循环。
代码示例:
for (int i = 0; i < 10; i++) {
if (i == 6) {
break;
// 在执行i==6时强制终止循环,i==6不会被执行
}
System.out.println(i);
}
//输出结果为0 1 2 3 4 5 ;6以后的都不会输出
2.continue
continue的作用是终止当前循环,但是不跳出循环,且本次循环中continue后面的语句不会执行了,随即开始下一趟循环。
代码示例:
for (int i = 0; i < 10; i++) {
if (i == 6) {
continue;
// i==6不会被执行,而是被中断了
}
System.out.println(i);
}
输出结果为0 1 2 3 4 5 7 8 9;只有6没有输出
5.三种循环异同点
1.相同点
无论哪一种循环结构,都有4个必不可少的部分:
初始部分、循环条件、循环体、更新循环变量。
2.不同点
- 在执行顺序上:
while:先判断循环条件,再执行;
do while:先执行一次,再判断循环条件;
for:先判断循环条件,再执行。 - 在应用场景上:
循环次数确定的情况,通常选用for循环;
循环次数不确定的情况,使用while循环;
do while循环挺少用的。