文章目录
一、什么是程序流程控制语句?
Java程序流程控制语句是指通过控制程序的执行顺序来实现特定的功能。
程序的流程控制一般分为3种:顺序结构、分支结构、循环结构
顺序结构:不加任何控制,代码从main方法开始自上而下执行;就像阅读文章一样从上往下一行一行的阅读。
分支结构:根据条件判断是true还是false,有选择性的执行代码。在Java语言中提供两个格式if 、 switch
循环结构:控制某一段代码重复执行。在Java语言中提供了三种格式,for、while、do-while
二、分支结构
2.1 if分支结构
if作用:用于对条件进行判断,判断的结果只有两个值true或者false,然后根据条件判断的结果来决定执行程序的代码。
2.1.1 if 的语法格式第一种
/*
条件表达式结果为true,执行下面的语句体;
条件表达式结果为false,则不执行语句体
*/
if(条件){
语句体;
}
//例子: 测量用户体温,体温高于37度发出提示。
double t = 37.5;
if(t > 37){
System.out.println("体温异常");
}
//因为满足表达式,所以执行if语句体。打印结果:体温异常
//如果不满足表达式,则不会执行if语句体。
2.1.2 if 的语法格式第二种
/*
条件表达式为true,就执行下面的语句体1
条件表达式为false,就执行else下面的语句体2
*/
if(条件){
语句体1;
}else{
语句体2;
}
//例子
//发红包,钱包余额是99元,现在要发出90元
double money = 19;
if(money >= 90){
System.out.println("发红包成功");
}else {
System.out.println("余额不足");
}
//因为满足表达式,所以执行if语句体1。打印结果:发红包成功
2.1.3 if 的语法格式第三种
/*第三种
条件表达式1 结果为true,就执行下面的代码1; 结果为false,就继续判断条件表达式2;
条件表达式2 结果为true,就执行下面的语句体;结果为false,就继续判断条件语句体3;
条件表达式3 结果为true,就执行下面的语句体3;结果为false,就继续判断后面的表达式;
....
如果前面所有条件表达式判断都为false,则执行最后的else语句中的代码
*/
if(条件){
语句体1;
}else if{
语句体2;
}else if{
语句体3;
}
...
else{
语句体n+1;
}
//例子
// 某个公司有一个绩效系统,根据员工的打分输出对应的绩效级别。
//D[0,60) C[60,80) B[80,90) A[90,100]
int score = 298;
if(score >= 0 && score < 60) {
System.out.println("您的绩效级别是: D");
}else if(score >= 60 && score < 80){
System.out.println("您的绩效级别是: C");
}else if(score >= 80 && score < 90){
System.out.println("您的绩效级别是: B");
}else if(score >= 90 && score <= 100){
System.out.println("您的绩效级别是: A");
}else {
System.out.println("请输入正确的绩效!");
}
//打印结果:请输入正确的绩效!
//以上案例,因为都不满足表达式1至4,所以执行else语句体。
2.2switch分支结构
switch 作用:通过比较值来决定执行哪条分支代码。
switch执行流程:1.先执行表达式的值,再拿这个值与case的值进行比较;2.与那个case值匹配,则执行那个case块的代码;3.如果表达式的值都不匹配,则执行default的代码块。
/*语法
switch(表达式){
case 值1:
执行代码1;
break;
case 值2:
执行代码2;
break;
case 值3:
执行代码3;
break;
...
default:
执行代码n;
}
}
*/
//用法案例
String week = "周三";
switch (week){
case "周一":
System.out.println("埋头苦干,解决bug");
break;
case "周二":
System.out.println("请求大牛程序员帮忙");
break;
case "周三":
System.out.println("今晚啤酒、龙虾、小烧烤");
break;
case "周四":
System.out.println("解决程序bug");
break;
case "周五":
System.out.println("今晚吃鸡");
break;
case "周六":
System.out.println("游戏时间");
break;
case "周日":
System.out.println("休息时间");
break;
default:
System.out.println("您输入的星期信息不存在");
}
注意事项:
1、switch表达式类型只能是byte、short、int、char;JDK5开始支持枚举,JDK7开始支持String;不支持double、float、boolean。
2、case给出的值不允许重复,且只能是字面量,不能是变量。
3.正常使用switch的时候,不要忘记写break,否则会出现穿透现象。当switch语句中没有遇到break,就会直接穿透到下一个case语句执行,直到遇到break为止。
在某些情况下可以利用case穿透现象实现需求,提高代码复用性。这个可以自行摸索。
2.3 if 、switch如何选择
if和switch的功能都是用来判断,但相对来说if的功能更为强大一点,switch分支做的判断,if也可以做。如果是需要对一个范围进行判断,使用if分支结构进行判断比较合适。对一个具体的值进行判断,则用switch分支进行判断比较合适。
三、循环结构
循环结构:可以控制一段代码重复执行多次。
3.1 for循环
//语法格式
for (初始化语句; 循环条件; 迭代语句) {
循环体语句(重复执行的代码);
}
初始化语句:一般是定义一个变量,并给初始值
循环条件:一般是一个关系表达式,结果必须是true或者false
迭代语句:用于对条件进行控制,一般是自增或者自减
循环语句体:需要重复执行的代码
执行的流程
//案例:求1~100中所有整数的和
int sum = 0;
//定义一个循环,先产生1-100,这100个数
for (int i = 1; i <= 100; i++) {
//每产生一个数据,就把这个数和sum累加
sum += i; //sum = sum + i;
}
System.out.println("1-100的数据和:" + sum);
3.2 while循环
//语法格式
while(循环条件){
循环体语句(重复执行的代码);
迭代语句;
}
执行流程
// 定义变量记住珠穆朗玛峰的高度和纸张的高度。
double peakHeight = 8848860;
double paperThickness = 0.1;
// 3、定义一个变量count用于记住纸张折叠了多少次
int count = 0;
// 2、定义while循环控制纸张开始折叠
while (paperThickness < peakHeight) {
// 把纸张进行折叠,把纸张的厚度变成原来的2倍。
paperThickness = paperThickness * 2;
count++;
}
System.out.println("需要折叠多少次:" + count);
System.out.println("最终纸张的厚度是:" + paperThickness);
3.3 do while循环
//语法格式
do{
循环体语句(重复执行的代码);
迭代语句;
}while(循环条件);
执行流程
3.4 循环结构区别
1.for循环 和 while循环(先判断后执行); do...while (先执行后判断)且至少会执行一次
2.for循环和while循环的执行流程是一模一样的,功能上无区别,for能做的while也能做,反之亦然。
如果已知循环次数建议使用for循环,如果不清楚要循环多少次建议使用while循环。
3 for循环中控制循环的变量只在循环中使用; while循环中,控制循环的变量在循环后还可以继续使用
3.5 死循环
顾名思义,死循环就是一直循环执行代码,没有触发循环结束的条件;死循环最典型的是可以用死循环来做服务器程序;谨慎使用是循环,可根据需求来写死循环。
//for死循环
for ( ; ; ){
System.out.println("Hello World1");
}
//while死循环
while (true) {
System.out.println("Hello World2");
}
//do-while死循环
do {
System.out.println("Hello World3");
}while (true);
四、循环嵌套
所谓循环嵌套,就是一个循环中又包含另一个循环(俗称套娃)
/*
*******
*******
*******
*******
使用for循环嵌套打印上面的内容
*/
for (int i = 1; i <= 4; i++) {
for (int j = 1; j <= 7; j++) {
System.out.print("*"); // 不换行
}
System.out.println(); //换行
}
套循环重点理解:外部循环每循环一次,内部循环会全部执行完一轮。
五、跳转语句 break 、continue
break作用:跳出并结束当前的循环体程序,且只能用于结束所在的循环体,或者switch分支
continue作用:结束本次循环,进入下一次循环,且只能在循环体中使用
break和continue不能在同一个循环体内使用
// 1、break:跳出并结束当前所在循环的执行。
for (int i = 1; i <= 5; i++) {
System.out.println("我爱学习:" + i);
if(i == 3){
// 打印三次我爱学习后结束循环,不再执行后面的第四、第五次循环。
break; // 跳出并结束当前所在循环的执行。
}
}
// 2、continue:跳出当前循环的当次执行,直接进入循环的下一次执行。
for (int i = 1; i <= 5; i++) {
if(i == 3) {
// 已经连续学习两天,第三天休息,后面继续学习
continue;
}
System.out.println("学习新知识" + i);//最后打印的结果只有四次,因为第三次跳过不执行
}
总结
以上就是Java的程序流程控制语句,本文仅仅简单介绍了控制语句的基本使用,更多的使用方法,可以自行去深入的研究其如何搭配使用。