转载请保留原文链接:
9.Java流程控制
流程控制语句是编程语言中的核心之一,可以分为`分支语句`(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 ** 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 ** 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."); }}
输出:
2switch over.
`case`没有`break`会怎样?
case如果没有break就会继续往下执行,不中断switch语句,直到遇到`break`,或者switch结尾.
示例代码:
package com.dashidan.lesson8;/** * 大屎蛋教程网-dashidan.com ** 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."); }}
输出:
23switch over.
网上很多文章说`switch`只支持整数型和字符(`char`)型.
那是以前了. JDK7.0开始`switch case`已经支持字符串类型了.
附带真相的代码:
package com.dashidan.lesson8;/** * 大屎蛋教程网-dashidan.com ** 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."); }}
输出:
aswitch 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++;}
执行步骤:
第一步判断
循环继续执行条件
i<3,是否为
true,如果为
true,继续第二步,如果为
false`则结束循环.第二步执行循环体(打印出变量i的值, i值加1).
开始循环执行第二步的判断,直到循环结束.
3.do...while
循环语句
先执行循环体,再判断是否结束循环,基本表达方式:
do{ //循环体} while(循环继续执行条件);
示例代码:
int i = 0;do { System.out.println("i: " + i); i++;} while (i < 3);
执行步骤:
第一步执行循环体(打印出变量i的值, i值加1).
第二步判断
循环继续执行条件
i<3,是否为
true,如果为
true,继续第二步,如果为
false`则结束循环.开始循环执行第一步的语句,直到循环结束.
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 ** 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 ** Java教程基础篇:8. Java流程控制 * 死循环 */public class Demo7 { public static void main(String[] args) { while (true) { System.out.println("死循环"); } }}
输出
死循环死循环死循环死循环死循环死循环死循环...
④ 示例代码
package com.dashidan.lesson8;/** * 大屎蛋教程网-dashidan.com ** 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: 0i: 1i: 2while循环基本表达方式i: 0i: 1i: 2do...while循环基本表达方式i: 0i: 1i: 2continue 在for循环中i: 0i: 2continue 在while循环中i: 2i: 3break在for循环中i: 0break在while循环中i: 0
⑤ 相关文章