概述
【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
// 格式
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
// 格式
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语句的格式
switch(表达式) {
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循环
- 格式
// 格式
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;
// 初始化多个变量来控制循环的情况
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循环的格式:
// while普通格式
while(判断条件语句) {
循环体语句;
}
// 普通格式示例
while(i < 100) {
syso(i);
}
-----
// while扩展版格式
初始化语句;
while(判断条件语句) {
循环体语句;
控制条件语句;
}
// 扩展版示例
int i = 0;
while(i < 100) {
syso(i);
i++;
}
- while循环的执行流程:
- 先执行关系表达式
- 如果关系表达式为true, 则执行循环体
- 循环体执行完后, 继续执行关系表达式
- 如果关系表达式为false, 则循环结束
- 如果关系表达式为true, 则执行循环体
- 先执行关系表达式
- while循环和for循环的相互转换:
// while
int i = 0;
while(i < 100) {
syso(i);
i++;
}
// for
for(int i = 0; i < 100; i++) {
syso(i);
}
do…while循环格式及基本使用
- 语句格式:
// 普通格式
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穿透简化代码
int 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语句的语句体, 其余不算
// 示例
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语句不写大括号的格式
- 当语句不写大括号时, 只有语句后的第一条语句算作语句的语句体, 其余不算
// 示例
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循环中的变量
// 外部声明的变量, 作用域如果包含了for循环, 也是可以在for循环中直接使用的
int i = 0;
for (; i < 10; i++) {
// ...
}
// 将for循环修改为死循环
for (;;) {
// 死循环
}
for (;;); // 连循环体都没有的死循环
// 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
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语句的格式
// 格式
switch (表达式) {
case 值1: // 当表达式的值为值1时执行
语句体1;
break;
case 值2: // 当表达式的值为值2时执行
语句体2;
break;
...
default: // 当表达式的值不能匹配上面的case时执行
语句体n;
break;
}
for循环格式
// 格式
for (初始化语句; 判断条件语句; 控制条件语句) {
循环体语句;
}
// 示例
for (int i = 1; i <= 5; i++) {
// 获取1~5的数值
}
while循环格式
// 普通格式
while (判断条件语句) {
循环体语句;
}
// 扩展格式
初始化语句;
while (判断条件语句) {
循环体语句;
控制条件语句;
}
// 示例
int i = 1;
while (i <= 5) {
syso(i); // 打印1~5
i++;
}
do…while格式
// 普通格式
do {
循环体语句;
} while (判断条件语句);
// 扩展格式
初始化语句;
do {
循环体语句;
控制条件语句;
} while (判断条件语句);
// 示例
int i = 1;
do {
syso(i);
i++;
} while (i <= 5);
往期知识:Java运算符那些事(最全知识点)
最后
以上就是细心八宝粥为你收集整理的【Java】java控制语句的那些事(最全知识点)流程控制语句的全部内容,希望文章能够帮你解决【Java】java控制语句的那些事(最全知识点)流程控制语句所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复