流程控制语句是编程语言中的核心之一,可以分为`分支语句`(if, else),`跳转语句`(switch)和`循环语句`(for, while).
① 分支语句
if
, else
属于分支语句,意思是根据条件执行语句. if-else 流程控制中,只会执行判断条件为真
方法体的代码,不满足条件的不执行.
1.最简单的流程控制if, else
如果if
括号中的条件为真(true
),则执行if
对应大括号内的语句. 如果if
括号中的条件为假(false
),则执行else
对应大括号内的语句.
int a = 0;
int b = 1;
if(a > b){
System.out.println(a);
} else {
System.out.println(b);
}
2.if-else if-else
- 如果
if
括号中的条件为真(true
),则执行if
对应大括号内的语句. - 如果
if
括号中的条件为假(false
),则顺次往下判断else if
对应大括号内的条件是否为真. - 如果条件为真,则执行大括号对应的语句.
- 如果条件为假,则继续向下判断.
package com.dashidan.lesson8;
/**
* 大屎蛋教程网-dashidan.com
* <p>
* Java教程基础篇:8. Java流程控制
*/
public class Demo1 {
public static void main(String[] args) {
int a = 0;
int b = 1;
if (a > b) {
System.out.println("a > b");
} else if (a == b) {
System.out.println("a == b");
} else {
System.out.println("a < b");
}
}
}
输出:
a < b
② 跳转语句
switch
是一种条件控制语句, 由case
, break
, default
(可省略)组成.
switch
根据一个传入的参数,从case
后:
的数据,找到和传入的参数相同的值.执行对应的case
部分的代码,到break
结束.结束switch
语句. 如果没有满足的case
情况.执行default
对应的语句.结束switch
语句.
代码示例:
switch (var) {
case 1:
System.out.println(1);
break;
case 2:
System.out.println(2);
break;
case 3:
System.out.println(3);
break;
default:
System.out.println("default : " + var);
break;
}
调用方式
package com.dashidan.lesson8;
/**
* 大屎蛋教程网-dashidan.com
* <p>
* Java教程基础篇:8. Java流程控制
* 基础switch case
*/
public class Demo2 {
public static void main(String[] args) {
int num = 2;
baseSwitch(num);
}
/**
* switch case基本模型
*
* @param var 传入的参数,通过该参数找到case对应的值,执行对应的代码.
*/
public static void baseSwitch(int var) {
switch (var) {
case 1:
System.out.println(1);
break;
case 2:
System.out.println(2);
break;
case 3:
System.out.println(3);
break;
default:
System.out.println("default : " + var);
break;
}
System.out.println("switch over.");
}
}
输出:
2
switch over.
case
没有break
会怎样?
case如果没有break就会继续往下执行,不中断switch语句,直到遇到break
,或者switch结尾.
示例代码:
package com.dashidan.lesson8;
/**
* 大屎蛋教程网-dashidan.com
* <p>
* Java教程基础篇:8. Java流程控制
* 测试case没有break的情况
*/
public class Demo3 {
public static void main(String[] args) {
int num = 2;
testSwitchWithoutBreak(num);
}
/**
* 测试case没有break的情况
*
* @param var 传入的case参数
*/
public static void testSwitchWithoutBreak(int var) {
switch (var) {
case 1:
System.out.println(1);
case 2:
System.out.println(2);
case 3:
System.out.println(3);
break;
default:
System.out.println(4);
break;
}
System.out.println("switch over.");
}
}
输出:
2
3
switch over.
网上很多文章说switch
只支持整数型和字符(char
)型.
那是以前了. JDK7.0开始switch case
已经支持字符串类型了.
附带真相的代码:
package com.dashidan.lesson8;
/**
* 大屎蛋教程网-dashidan.com
* <p>
* Java教程基础篇:8. Java流程控制
* switch case参数为字符串
*/
public class Demo4 {
public static void main(String[] args) {
String str = "a";
testSwitchCaseString(str);
}
/**
* 测试switch case参数为字符串
*
* @param var 传入的case字符串
*/
public static void testSwitchCaseString(String var) {
switch (var) {
case "a":
System.out.println("a");
break;
case "b":
System.out.println("b");
break;
case "c":
System.out.println("c");
break;
default:
System.out.println("default");
break;
}
System.out.println("switch over.");
}
}
输出: a switch over.
③ 循环语句
循环就是同样的规则重复执行. Java基本循环控制有3种: for
, while
, do...while
.
1.for循环基本表达方式:
for(定义变量及初始值; 循环继续执行条件; 循环每执行一次变量的变化){
//循环体
}
示例代码:
for (int i = 0; i < 3; i++) {
System.out.println("i: " + i);
}
执行步骤:
- 第一步设定一个整型变量
i
,并设定初始值i = 0
. - 第二步判断
循环继续执行条件
i<3,是否为
true,如果为
true,继续第三步,如果为
false`则结束循环. - 第二步满足
i<3
(true)时,执行循环体(打印出变量i的值). - 第三步执行完循环体后,执行
循环每执行一次变量的变化
,为(i++),这时i
的值加1,从0变为1. - 开始循环执行第二步的判断,直到循环结束.
2.while循环基本表达方式:
先判断是否结束循环,再执行循环体.
while(循环继续执行条件){
//循环体
}
示例代码:
int i = 0;
while (i < 3) {
System.out.println("i: " + i);
i++;
}
执行步骤:
1. 第一步判断循环继续执行条件
i<3,是否为
true,如果为
true,继续第二步,如果为
false`则结束循环.
2. 第二步执行循环体(打印出变量i的值, i值加1).
3. 开始循环执行第二步的判断,直到循环结束.
3.do...while
循环语句
先执行循环体,再判断是否结束循环,基本表达方式:
do{
//循环体
} while(循环继续执行条件);
示例代码:
int i = 0;
do {
System.out.println("i: " + i);
i++;
} while (i < 3);
执行步骤:
1. 第一步执行循环体(打印出变量i的值, i值加1).
2. 第二步判断循环继续执行条件
i<3,是否为
true,如果为
true,继续第二步,如果为
false`则结束循环.
3. 开始循环执行第一步的语句,直到循环结束.
4.continue
关键字
在循环体中的continue
是从continue处停止当前的逻辑执行, 并且继续进入下一次循环.
- for循环continue示例代码:
for (int i = 0; i < 3; i++) {
if (i == 1) {
continue;
}
System.out.println("i: " + i);
}
- while循环continue示例代码:
int i = 0;
while (i < 3) {
if (i == 1) {
continue;
}
System.out.println("i: " + i);
i++;
}
在for
循环和while
循环中,continue
语句作用一样.当i==1
时,执行了continue
语句,跳过了后续的语句,所以没有输出i: 1
.
5.break
关键字
在循环体中的break
结束当前的循环.
* for循环示例代码:
for (int i = 0; i < 3; i++) {
if (i == 1) {
break;
}
System.out.println("i: " + i);
}
- while循环示例代码:
int i = 0;
while(i < 3){
if(i == 1){
break;
}
System.out.println("i: " + i);
i++;
}
6.return
关键字
return
语句可以使其从当前方法中退出.返回到调用该方法的语句处.继续程序的执行. 返回语句有两种格式:无返回值和有返回值.
- return有返回值, 返回一个值给调用该方法的语句.返回值的数据类型必须与方法声明中的返回值类型一致.
- return无返回值, 当方法说明中用
void
声明无返回值时,不返回任何值.
return返回值
return
语句通常用在一个方法体的最后,退出该方法并返回一个值. 单独的return
语句用在一个方法体的中间时,会产生编译错误,因这会导致后续语句执行不到. 可以通过把return
语句嵌入某些语句(如:if…else
)来使程序在未执行完方法中的所有语句时退出.
示例代码:
package com.dashidan.lesson8;
/**
* 大屎蛋教程网-dashidan.com
* <p>
* Java教程基础篇:8. Java流程控制
* return 语句
*/
public class Demo6 {
public static void main(String[] args) {
/** 执行无返回值的方法*/
testReturn(1);
int b = testReturnInt(2, 3);
System.out.println("执行有返回值的方法: " + b);
}
public static void testReturn(int value) {
System.out.println("执行无返回值的方法: " + value);
}
public static int testReturnInt(int p0, int p1) {
return p0 + p1;
}
}
输出:
执行无返回值的方法: 1
执行有返回值的方法: 5
7. 死循环
当程序进入循环中,如果符合继续执行循环的条件一直为true, 程序就会无限执行这个循环体的代码, 导致无法执行下一句语句,这种情况就叫死循环
. 开发过程中需要注意这点. 最简单的是循环的例子是
while(true){
...
}
示例代码
package com.dashidan.lesson8;
/**
* 大屎蛋教程网-dashidan.com
* <p>
* Java教程基础篇:8. Java流程控制
* 死循环
*/
public class Demo7 {
public static void main(String[] args) {
while (true) {
System.out.println("死循环");
}
}
}
输出
死循环
死循环
死循环
死循环
死循环
死循环
死循环
...
④ 示例代码
package com.dashidan.lesson8;
/**
* 大屎蛋教程网-dashidan.com
* <p>
* Java教程基础篇:8. Java流程控制
* Java循环语句
*/
public class Demo5 {
public static void main(String[] args) {
/** for循环基本表达方式*/
System.out.println("for循环基本表达方式");
for (int i = 0; i < 3; i++) {
System.out.println("i: " + i);
}
System.out.println("while循环基本表达方式");
/** while循环基本表达方式*/
int i = 0;
while (i < 3) {
System.out.println("i: " + i);
i++;
}
System.out.println("do...while循环基本表达方式");
/** do...while循环基本表达方式*/
i = 0;
do {
System.out.println("i: " + i);
i++;
} while (i < 3);
System.out.println("continue 在for循环中");
/** continue 在for循环中*/
for (i = 0; i < 3; i++) {
if (i == 1) {
continue;
}
System.out.println("i: " + i);
}
System.out.println("continue 在while循环中");
i = 0;
while (i < 3) {
i++;
if (i == 1) {
continue;
}
System.out.println("i: " + i);
}
/**
* 在`for`循环和`while`循环中,`break`语句作用一样.
* 当`i==1`时,执行了`break`语句,结束了循环.所以只有`i: 0`的输出.
*/
System.out.println("break在for循环中");
for (i = 0; i < 3; i++) {
if (i == 1) {
break;
}
System.out.println("i: " + i);
}
System.out.println("break在while循环中");
i = 0;
while (i < 3) {
if (i == 1) {
break;
}
System.out.println("i: " + i);
i++;
}
}
}
输出:
for循环基本表达方式
i: 0
i: 1
i: 2
while循环基本表达方式
i: 0
i: 1
i: 2
do...while循环基本表达方式
i: 0
i: 1
i: 2
continue 在for循环中
i: 0
i: 2
continue 在while循环中
i: 2
i: 3
break在for循环中
i: 0
break在while循环中
i: 0