Java的流程控制
一、三种执行顺序
顺序结构、分支结构(if、switch)、循环结构(for、while、do-while)
二、分支结构
(一)if分支的三种形式(根据条件真假来执行某段代码)
1.只有if
package xixi;
public class HelloWorld {
public static void main(String[] args) {
// 案例:测温机当测出温度大于37.3度,则报警。
double d = 37.8;
if (d>=37.3){
System.out.println("温度异常,请远离!");
}
}
}
//结果
//温度异常,请远离!
2.if-else
package xixi;
public class HelloWorld {
public static void main(String[] args) {
// 案例:如果余额大于等于90元,则发送红包成功,否则输出余额不足
double money = 89.7;
if (money>=90){
System.out.println("红包发送成功!");
}else {
System.out.println("余额不足!");
}
}
}
//结果
//余额不足!
3.if-else if-else
package xixi;
public class HelloWorld {
public static void main(String[] args) {
// 案例:如果顾客消费大于等于100,打9折;大于等于200,打8折;大于等于300,打7折。
double money = 208;
if (money>=300){
System.out.println("打7折!");
}else if (money>=200) {
System.out.println("打8折!");
} else if (money>=100) {
System.out.println("打9折!");
}else {
System.out.println("不打折!");
}
}
}
//结果
//打8折!
4.注意:
if语句的{}中只有一行代码的情况,{}可以省略不写。
package xixi;
public class HelloWorld {
public static void main(String[] args) {
// 案例:测温机当测出温度大于37.3度,则报警。
double d = 37.8;
if (d>=37.3) System.out.println("温度异常,请远离!");
}
}
//结果
//温度异常,请远离!
(二)switch分支(通过比较值来决定执行哪条分支,性能较好)
1.格式
package xixi;
public class HelloWorld {
public static void main(String[] args) {
// 案例:周一:埋头苦干解决bug;周二:请求大牛程序员帮忙;周三:今晚烧烤;周四:主动帮助新来的程序员解决bug;周五:今晚约会;周六:出门旅游;周日:宅家休息,准备上班。
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("你输入的日期异常。");
}
}
}
//结果
//请求大牛程序员帮忙
2.注意:
① 表达式类型只能是byte、short、int、char,JDK5开始支持枚举,JDK7开始支持String,不支持double(计算不精确)、float(计算不精确)、long(范围太大)。
②case给出的值不允许重复,且只能是字面量,不能是变量(变量可变)。
③正常使用switch的时候,不要忘记写break,否则会出现穿透现象。
package xixi;
public class HelloWorld {
public static void main(String[] args) {
// 案例:周一:埋头苦干解决bug;周二:请求大牛程序员帮忙;周三:今晚烧烤;周四:主动帮助新来的程序员解决bug;
String week = "周二";
switch (week){
case "周一":
System.out.println("埋头苦干解决bug");
break;
case "周二":
System.out.println("请求大牛程序员帮忙");
case "周三":
System.out.println("今晚烧烤");
break;
case "周四":
System.out.println("主动帮助新来的程序员解决bug");
break;
default:
System.out.println("你输入的日期异常。");
}
}
}
(穿透现象:因为第13行没有break,所以当执行完周二的代码后继续执行周三的代码(因为switch只判断一次值),直到运行到第16行的break才结束)
//结果
//请求大牛程序员帮忙
//今晚烧烤
3.穿透现象的使用(当case代码相同时,可以简化代码)
package xixi;
public class HelloWorld {
public static void main(String[] args) {
// 案例:周一:埋头苦干解决bug;周二:请求大牛程序员帮忙;周三:请求大牛程序员帮忙;周四:请求大牛程序员帮忙;周五:今晚约会;周六:今晚约会;周日:宅家休息,准备上班。
String week = "周二";
switch (week){
case "周一":
System.out.println("埋头苦干解决bug");
break;
case "周二":
case "周三":
case "周四":
System.out.println("请求大牛程序员帮忙");
break;
case "周五":
case "周六":
System.out.println("今晚约会");
break;
case "周日":
System.out.println("宅家休息,准备上班");
break;
default:
System.out.println("你输入的日期异常。");
}
}
}
(周二代码运行后一直穿透到周四的代码,遇到break后跳出switch)
//结果
//请求大牛程序员帮忙
三、循环结构
(一)for循环(控制一段代码反复执行多次)
1.格式
package xixi;
public class HelloWorld {
public static void main(String[] args) {
// 案例:循环3次输出"Hello World"
for (int i = 0; i<3; i++){
System.out.println("Hello World");
}
}
}
//结果
//Hello World
//Hello World
//Hello World
2.快捷键
fori —— "for ( int i = 0; i < _; i++){}"
(二)while循环(控制一段代码反复执行多次,但不确定次数)
1.格式
package xixi;
public class HelloWorld {
public static void main(String[] args) {
// 案例:1-100的奇数和
int i = 0;
while (i<3) {
System.out.println("Hello World");
i++;
}
}
}
//结果
//Hello World
//Hello World
//Hello World
(三)do-while循环(先执行,后判断)
1.格式
package xixi;
public class HelloWorld {
public static void main(String[] args) {
// 案例:1-100的奇数和
int i = 3;
do {
System.out.println("Hello World");
i++;
}while (i<3);
}
}
do-while的执行顺序是先执行循环语句再判断,所以即使变量初始值已经不符合循环的要求,但仍然可以执行一次循环语句
//结果
//Hello World
(四)注意
1.循环变量的使用
for循环中,控制循环的变量只在循环中使用;while和do-while循环中,控制循环的变量在循环结束后仍然能使用。
2.快捷键
①选中要写入的代码块+"Ctrl"+"Alt"+"t"——可以快捷输出循环或者分支的结构
(五)死循环(三种写法)
1.for循环
2.while循环
3.do-while循环
(六)循环嵌套
注意:三种循环可以互相嵌套
(七)跳转关键字(break、continue)
1.break(跳出并结束当前所在循环的执行)
注意:用于循环中或者switch分支的执行中,但可以结束循环中的if语句
2.continue(跳出当前循环的当次执行,直接进入循环下一次执行)
注意:只用于循环