【Java】java控制的那些事(最全知识点)
学习一门语言,最基础的不过控制语句,语言之间互通性最高的也是控制语句,如果你连控制语句都没搞懂,都不熟悉,那么你的编程之路注定不顺利,所以奔本篇详细介绍了控制语句的各类知识点
文章目录
- 【Java】java控制的那些事(最全知识点)
- 流程控制语句
- 流程控制语句分类:
- 顺序结构
- 选择结构
- if语句
- if语句第一种格式的基本使用
- if语句第二种格式的基本使用
- if语句第三种格式的基本使用
- switch语句的格式和执行流程
- 循环控制语句
- for循环
- while循环格式和基本使用
- do...while循环格式及基本使用
- for, while, do...while三种循环的区别
- 控制循环语句
- break跳转控制语句的概述和基本使用
- continue跳转控制语句
- 控制跳转语句分析
- 扩展
- 总结
- if语句格式
- switch语句的格式
- for循环格式
- while循环格式
- do...while格式
流程控制语句
流程控制语句分类:
- 顺序结构
- 选择结构
- 循环结构
顺序结构
- 顺序结构是最基本的流程
- 顺序结构的特点: 从上往下依次进行
选择结构
if语句
if语句第一种格式的基本使用
-
选择结构:
- 也被称为分支结构
-
选择结构有2种:
- if语句
- switch语句
-
if语句的第一种格式: 只使用if
复制代码
1
2
3
4
5
6
7
8
9
10
11// 格式 if(关系表达式) { 语句体 } // 示例 int a = 0; if(a == 1) { System.out.println("a等于1"); }
- 第一种格式的执行流程:
- 首先判断关系表达式的结果是true还是false
- 如果是true就执行语句体
- 如果是false就不执行语句体
- 首先判断关系表达式的结果是true还是false
if语句第二种格式的基本使用
- if语句的第二种格式: if…else…
- 第二种格式的执行流程:
- 首先判断关系表达式看其结果是true还是false
- 如果是true就执行语句体1
- 如果是false就执行语句体2
if语句第三种格式的基本使用
- if语句的第三种格式: if…else if…else
复制代码
1
2
3
4
5
6
7
8
9
10
11// 格式 if(关系表达式1) { 语句体1 } else if (关系表达式2) { 语句体2 }...{ } else { // else {} 是可选的 语句体n }
- 第三种格式的执行流程:
- 首先判断关系表达式1, 看其结果是true还是false
- 如果是true就执行语句体1
- 如果是false就继续判断关系表达式2, 看其结果是true还是false
- 如果是true就执行语句体2
- 如果是false就继续判断关系表达式3, 看其结果是true还是false
- …
- 如果没有任何关系表达式为true, 就执行else中的语句体
- 首先判断关系表达式1, 看其结果是true还是false
- 能不能省略最后的else? 可以
switch语句的格式和执行流程
- switch语句的格式
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16switch(表达式) { case 值1: 语句体1; break; case 值2: 语句体2; break; ... case 值n: 语句体n; break; default: 语句体n+1; break; }
- 说明
- switch表达式允许的数据类型:
- byte, short, char, int
- 都是可隐式转换为int的类型, 因为byte, short, char可以隐式转换为int, 所以也可以使用
- JDK5起可以是枚举类型
- JDK7起可以是String
- 小括号中可以是常量, 也可以是变量
- byte, short, char, int
- case后面的值:
- 用来和表达式的值进行匹配
- 值只能是常量
- 值的类型应该和switch小括号中值的类型一致
- break: 中断
- default: 当所有case都不匹配时, 执行default
- switch表达式允许的数据类型:
- 执行流程
- 首先计算表达式的值
- 然后执行符合的case
- 如果没有符合的case, 则执行default
循环控制语句
- 循环语句: 在满足循环条件的情况下, 反复执行某段代码.
- 循环体: 这段被重复执行的代码
- 循环的停止:
- 在合适的时候将循环判断条件修改为false, 从而结束循环. 否则循环将一直执行下去, 形成死循环
- 循环语句的组成
- 初始化语句: 一条语句(一条语句可以初始化多个变量), 这些语句完成一些初始化操作
- 判断条件语句: boolean表达式, 这个表达式能决定是否执行循环体
- 循环体语句: 要重复做的事情
- 控制条件语句: 控制循环结束
- 3种循环结构语句
- for循环
- while循环
- do…while循环
for循环
- 格式
复制代码
1
2
3
4
5
6
7
8
9
10
11// 格式 for(初始化语句; 判断条件语句; 控制条件语句) { 循环体语句; } // for循环适用于知道循环多少次的情况 // 示例 for (int i = 1; i <= 5; i++) { System.out.println("我错了"); syso(i); }
- 执行流程
- 先执行初始化语句
- 然后执行判断条件语句
- 如果为true, 则执行循环体语句
- 循环体语句执行完毕后, 执行控制条件语句
- 从步骤2重复
- 如果为false, 则for循环结束
- 如果为true, 则执行循环体语句
- 初始化语句只能有一句吗?
- 只能有一句
- 但注意, 一句可以初始化多个变量:
int i = 0, j = 1, k = 1;
复制代码
1
2
3
4
5
6
7
8
9
10
11
12// 初始化多个变量来控制循环的情况 for(int i = 0, j = 10; i < 10 && j > 5; i++, j--) { System.out.println(i + ", " + j); } // 输出结果 i=0, j=10 i=1, j=9 i=2, j=8 i=3, j=7 i=4, j=6
- 注意: 初始化语句在循环中只执行一次
while循环格式和基本使用
- while循环的格式:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26// while普通格式 while(判断条件语句) { 循环体语句; } // 普通格式示例 while(i < 100) { syso(i); } ----- // while扩展版格式 初始化语句; while(判断条件语句) { 循环体语句; 控制条件语句; } // 扩展版示例 int i = 0; while(i < 100) { syso(i); i++; }
- while循环的执行流程:
- 先执行关系表达式
- 如果关系表达式为true, 则执行循环体
- 循环体执行完后, 继续执行关系表达式
- 如果关系表达式为false, 则循环结束
- 如果关系表达式为true, 则执行循环体
- 先执行关系表达式
- while循环和for循环的相互转换:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12// while int i = 0; while(i < 100) { syso(i); i++; } // for for(int i = 0; i < 100; i++) { syso(i); }
do…while循环格式及基本使用
- 语句格式:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12// 普通格式 do { 循环体语句; } while(判断条件语句); // 扩展格式: 初始化语句; do { 循环体语句; 控制条件语句; } while(判断条件语句);
- 执行流程:
- 执行初始化语句
- 执行循环体语句
- 执行控制条件语句
- 执行判断条件语句, 看是true还是false
- 如果是false, 则结束循环
- 如果是true, 回到2继续执行循环体语句
for, while, do…while三种循环的区别
-
区别
- do…while: 至少执行一次循环体
- for, while: 必须判断条件成立, 才可以执行循环体
-
for循环的初始化语句的作用域: for的大括号内
-
思考:
- for的初始化表达式能否定义在for循环外? 可以, 定义在for循环前
- for循环的()之内的三个表达式能否有多条? 可以
控制循环语句
- 2个控制循环语句:
break
: 直接结束循环, 或switch语句continue
: 结束本次循环, 继续执行下一次
break跳转控制语句的概述和基本使用
- break的使用场景: 不能单独使用, 必须用于switch或循环中
- break的作用:
- 在switch语句中, 用于结束case
- 在循环中, 用于结束所在的循环
continue跳转控制语句
- continue的使用场景: 循环中
- continue的作用: 结束本次循环, 继续下一次的循环
控制跳转语句分析
扩展
- switch语句的case穿透
- 如果switch的case语句中没有break, 则会继续执行下一个case的代码, 这称为case穿透
- case穿透有时会导致代码出现问题, 但有时我们也利用case穿透简化代码
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16int a = 2; switch (a) { case 1: System.out.println("进入1"); break; case 2: System.out.println("进入2"); case 3: System.out.println("进入3"); break; } 会输出: 进入2 进入3
- if语句不写大括号的格式
- 当if语句不写大括号时, 只有if语句后的第一条语句算作if语句的语句体, 其余不算
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17// 示例 if (false) { System.out.println("这条语句不会被执行"); System.out.println("这条语句不会被执行"); } // 去掉大括号后 if (false) System.out.println("这条语句不会被执行"); System.out.println("这条语句会被执行"); // 相当于 if (false) { System.out.println("这条语句不会被执行"); } System.out.println("这条语句会被执行");
- while语句, for语句不写大括号的格式
- 当语句不写大括号时, 只有语句后的第一条语句算作语句的语句体, 其余不算
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38// 示例 while (false) { System.out.println("这条语句不会被执行"); System.out.println("这条语句不会被执行"); } // 去掉大括号后 while (false) System.out.println("这条语句不会被执行"); System.out.println("这条语句会被执行, 且只执行1次"); // 相当于 while (false) { System.out.println("这条语句不会被执行"); } System.out.println("这条语句会被执行, 且只执行1次"); //------------------ // for示例 for (int i = 0; i < 1; i++) { System.out.println("这条语句不会被执行"); System.out.println("这条语句不会被执行"); } // 去掉大括号后 for (int i = 0; i < 1; i++) System.out.println("这条语句不会被执行"); System.out.println("这条语句会被执行, 且只执行1次"); // 相当于 for (int i = 0; i < 1; i++) { System.out.println("这条语句不会被执行"); } System.out.println("这条语句会被执行, 且只执行1次");
- for循环哪些语句可以省略:
- 如果变量在for循环外已经声明, 则初始化语句可以省略
- 判断条件语句可以省略, 相当于不停止
- 控制条件语句可以省略, 相当于不改变for循环中的变量
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13// 外部声明的变量, 作用域如果包含了for循环, 也是可以在for循环中直接使用的 int i = 0; for (; i < 10; i++) { // ... } // 将for循环修改为死循环 for (;;) { // 死循环 } for (;;); // 连循环体都没有的死循环
复制代码
1
2
3
4
5
6
7// while也可以死循环 while (true) { // 死循环 } while (true); // 没有循环体的死循环
总结
- 流程控制语句
- 顺序结构
- 选择结构: 用于根据不同条件执行不同的代码
- if语句
- 3种格式
- else…if, else语句可以省略
- switch语句
- case穿透
- switch表达式允许的数据类型:
- byte, short, char, int
- 都是可隐式转换为int的类型, 因为byte, short, char可以隐式转换为int, 所以也可以使用
- JDK5起可以是枚举类型
- JDK7起可以是String
- 小括号中可以是常量, 也可以是变量
- byte, short, char, int
- case后面的值:
- 用来和表达式的值进行匹配
- 值只能是常量
- 值的类型应该和switch小括号中值的类型一致
- break: 中断
- default: 当所有case都不匹配时, 执行default
- if语句适用于有范围的场景, 或者具体值的场景
- switch语句适用于具体值场景, 不适用于范围的场景
- if语句
- 循环结构: 用于在满足循环条件的情况下, 重复执行某些代码
- for循环
- 适用于知道循环次数的场景
- while循环
- 适用于不知道循环次数的场景
- 至少执行0次循环体
- do…while循环
- 适用于不知道循环次数的场景
- 至少执行1次循环体
- 循环控制语句: 控制循环的跳过或结束
- break
- 适用场景: switch语句, 循环
- 作用: 结束switch语句或所在循环
- continue
- 适用场景: 循环
- 作用: 结束本次循环, 继续下次循环
- break
- for循环
if语句格式
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23// 格式1 if (关系表达式) { 语句体; // 关系表达式为true时执行 } // 格式2 if (关系表达式) { 语句体1; // 关系表达式为true时执行 } else { 语句体2; // 关系表达式为false时执行 } // 格式3 if (关系表达式1) { 语句体1; // 关系表达式1为true时执行 } else if (关系表达式2) { 语句体2; // 关系表达式2为true时执行 } ... } else { 语句体n; // 以上关系表达式都为false时执行 }
switch语句的格式
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14// 格式 switch (表达式) { case 值1: // 当表达式的值为值1时执行 语句体1; break; case 值2: // 当表达式的值为值2时执行 语句体2; break; ... default: // 当表达式的值不能匹配上面的case时执行 语句体n; break; }
for循环格式
复制代码
1
2
3
4
5
6
7
8
9
10// 格式 for (初始化语句; 判断条件语句; 控制条件语句) { 循环体语句; } // 示例 for (int i = 1; i <= 5; i++) { // 获取1~5的数值 }
while循环格式
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19// 普通格式 while (判断条件语句) { 循环体语句; } // 扩展格式 初始化语句; while (判断条件语句) { 循环体语句; 控制条件语句; } // 示例 int i = 1; while (i <= 5) { syso(i); // 打印1~5 i++; }
do…while格式
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20// 普通格式 do { 循环体语句; } while (判断条件语句); // 扩展格式 初始化语句; do { 循环体语句; 控制条件语句; } while (判断条件语句); // 示例 int i = 1; do { syso(i); i++; } while (i <= 5);
往期知识:Java运算符那些事(最全知识点)
最后
以上就是细心八宝粥最近收集整理的关于【Java】java控制语句的那些事(最全知识点)流程控制语句的全部内容,更多相关【Java】java控制语句内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复