JAVA 流程控制
2016-06-16 20:21
399 查看
本页面更新日期: 2016年06月16日
JAVA提供两种分支控制结构, if 和 switch 语句.
if 语句使用 布尔表达式 或 布尔值 作为分支条件来进行分支控制.
switch 语句用于对多个整型值进行匹配, 从而实现分支控制.
第一种:
第二种:
第三种:
在上面的 if 的三种形式中, if 之后的括号里 只能是一个逻辑表达式, 即这个表达式的返回值 只能是 true 或 false.
在上面的代码中, if (logic expression) else if (logic expression) 和 else 后, 花括号 {} 括起来的多行代码被称为 代码块.
一个代码块通常被当作一个整体来执行 (除非运行过程中遇到 return , break, continue 等关键字, 或者遇到了异常), 因此这个代码块也被称为条件执行体.
例如下面代码
switch 语句往往需要在 case 标签后紧跟一个代码块, case 标签作为这个代码块的标识. 语法格式如下:
switch 分支语句执行顺序是, 先对 expression 求值, 然后依次匹配 condition1 , condition2 ….. 等值, 遇到匹配的值即执行对应的代码块; 如果所有 case 标签后的值 都不与 expression 表达式的值相等, 则执行 default 标签后的代码块.
下面我们写个代码试试看
运行结果符合逻辑, 不知道你注意没, 在 case 标签后的每个代码块的最后都有一条 break; 这个 break; 语句非常重要. 为什么这么说? 你试试把上面例子里的 break; 语句都去掉, 保存后重新编译 运行试试看. 肯定逻辑就不通了.
break 的中文意思就是 中断. 让我们想想, 也就是找到了符合条件的, 执行完里面的代码块就可以中断了. 想想也是对吧? 这样才符合逻辑嘛 嘿嘿嘿.
当反复执行这个循环体时, 需要在合适的时候把循环条件改为假, 从而结束循环, 否则循环将一直执行下去, 形成死循环.
while 循环每次执行循环体之前, 先对 test_expression 循环条件求值, 如果循环条件为 true, 则运行循环体部分. 如果 test_expression 一开始就为 false . 则 花括号内的{} 循环体一次也不会执行.
让我们写个简单的 while 循环案例.
其中 迭代语句 很重要, 如果没有它, count < 10 的条件将永远为 true . 那就是死循环. 就逗逼了.
while 循环是先判断循环条件, 如果条件为真则执行循环体.
do while 循环则是先执行循环体, 然后才判断循环条件, 如果循环条件为真, 则执行下一次循环, 否则终止循环.
你看, 它俩还是有区别的, 存在即合理 对吧. 以后面对不同的场景, 肯定有它的意义.
do while 循环的语法格式如下:
让我们试试写一个例子
从上面的例子就可以看出, 即使 test_expression 循环条件一开始就是 false .
do while 也会执行循环体一次. 屌不屌 -,-
大部分情况下, for 循环可以代替 while 循环, do while 循环.
for 循环的语法格式:
for 循环时, 先执行 循环的初始化语句 init_statement, 初始化语句只执行一次.
在执行循环体之前, 计算 test_expression 循环条件的值, 如果循环条件返回 true , 则开始执行循环体.
循环体执行结束后 执行循环迭代语句 iteration_statement .
写个例子试试看
在上面的例子中, for 循环初始化语句只有一个, 循环条件也只有一个.
实际上 for 循环允许同时指定多个初始化语句, 循环条件也可以是一个 包含逻辑运算符 的表达式.
写个例子试试.
这个例子并不复杂, 对于输出的结果你可能刚开始有点懵逼. 但是你要静下心来, 用脑子想想这里面到底发生了什么. 给你个提示 ++ 在前和在后是有区别的.
上面代码中初始化变量有3个, 但是只能有一个声明语句. (b, s, p 都是int 对吧?)
因此, 如果在初始化表达式中声明多个变量, 那么这些变量都具有相同的数据类型.
或者跳过自己不想要的循环结果.
java 提供给你 continue 和 break 来做这种事情.
还有一个 return 更牛逼一点, 它可以结束整个方法. 自然方法内的循环也会被结束.
在上面的例子中, 当 i 等于 2 时, 循环体内执行了 break 语句, 该循环结束.
举栗说明
从上面程序的结果来看, 当 i 等于1 时. 没有输出那个小尾巴.
因为程序执行到 continue 时, 忽略了当次循环中 continue 后面的代码.
可能你对于这个家伙的用法还不太熟, 不过没关系, 经常用用就熟了.
return 的功能是结束一个方法.
循环在方法内, 自然也被一起干掉.
举栗说明
当程序运行到 return 时, 方法就被结束了. 自然尾巴啥的都没有了.
顺序结构
如果程序中没有流程控制, 就是自上而下的运行, 直到结束. 对吧? 嗯, 解释完毕.分支结构
这个就有点意思了.JAVA提供两种分支控制结构, if 和 switch 语句.
if 语句使用 布尔表达式 或 布尔值 作为分支条件来进行分支控制.
switch 语句用于对多个整型值进行匹配, 从而实现分支控制.
if 条件语句
if语句有如下三种形式第一种:
if (logic expression) { statement... }
第二种:
if (logic expression) { statement... }
else
{
statement...
}
第三种:
if (logic expression) { statement... }
else if (logic expression) { statement... }
...// 之后还可以根据需要 加多个 else if 进行判断
else //结尾的 else 根据情况 可加 可不加 如果判断一定要有结果的话 就加.
{
statement...
}
在上面的 if 的三种形式中, if 之后的括号里 只能是一个逻辑表达式, 即这个表达式的返回值 只能是 true 或 false.
在上面的代码中, if (logic expression) else if (logic expression) 和 else 后, 花括号 {} 括起来的多行代码被称为 代码块.
一个代码块通常被当作一个整体来执行 (除非运行过程中遇到 return , break, continue 等关键字, 或者遇到了异常), 因此这个代码块也被称为条件执行体.
例如下面代码
public class IfTest { public static void main(String[] args) { int age = 30; if (age > 20) //只有当 age > 20时, 下面花括号 括起来的代码块才会执行 { System.out.println("年龄已经大于20岁了"); System.out.println("哎...光阴这把杀猪刀, 惨惨惨...."); } } }
switch 分支语句
switch 语句由 一个控制表达式 和 多个 case 标签组成, 和 if 语句不同的是 , switch 的控制表达式里的数据类型不能是 布尔类型. 可以是 byte,short,char,int 整数类型和枚举类型和String类型.switch 语句往往需要在 case 标签后紧跟一个代码块, case 标签作为这个代码块的标识. 语法格式如下:
switch (expression) { case condition1: statement... break; case condition2: statement... break; ... //可以通过上面的例子 联想后面 //最后的最后 default: statement...; }
switch 分支语句执行顺序是, 先对 expression 求值, 然后依次匹配 condition1 , condition2 ….. 等值, 遇到匹配的值即执行对应的代码块; 如果所有 case 标签后的值 都不与 expression 表达式的值相等, 则执行 default 标签后的代码块.
下面我们写个代码试试看
public class SwitchTest { public static void main(String[] args) { //声明变量 score , 并为其赋值 'C' char score = 'C'; //执行 switch 分支语句 switch (score) { case 'A': System.out.println("优秀"); break; case 'B': System.out.println("良好"); break; case 'C': System.out.println("差"); break; default: System.out.println("成绩输入错误"); } } }
运行结果符合逻辑, 不知道你注意没, 在 case 标签后的每个代码块的最后都有一条 break; 这个 break; 语句非常重要. 为什么这么说? 你试试把上面例子里的 break; 语句都去掉, 保存后重新编译 运行试试看. 肯定逻辑就不通了.
break 的中文意思就是 中断. 让我们想想, 也就是找到了符合条件的, 执行完里面的代码块就可以中断了. 想想也是对吧? 这样才符合逻辑嘛 嘿嘿嘿.
循环结构
循环语句可以在满足 循环条件 的情况下, 反复执行某一段代码, 这段被重复执行的代码被称为 循环体.当反复执行这个循环体时, 需要在合适的时候把循环条件改为假, 从而结束循环, 否则循环将一直执行下去, 形成死循环.
while 循环语句
while 循环的语法格式如下:[init_statement] while(test_expression) { statement; [iteration_statement] }
while 循环每次执行循环体之前, 先对 test_expression 循环条件求值, 如果循环条件为 true, 则运行循环体部分. 如果 test_expression 一开始就为 false . 则 花括号内的{} 循环体一次也不会执行.
让我们写个简单的 while 循环案例.
public class WhileTest { public static void main(String[] args) { //循环的初始化条件 int count = 0; //当 count 小于 10 时, 执行循环体 while (count < 10) { System.out.println(count); //迭代语句 count++; } System.out.println("循环结束!"); } }
其中 迭代语句 很重要, 如果没有它, count < 10 的条件将永远为 true . 那就是死循环. 就逗逼了.
do while 循环语句
do while 循环与 while 循环的区别在于:while 循环是先判断循环条件, 如果条件为真则执行循环体.
do while 循环则是先执行循环体, 然后才判断循环条件, 如果循环条件为真, 则执行下一次循环, 否则终止循环.
你看, 它俩还是有区别的, 存在即合理 对吧. 以后面对不同的场景, 肯定有它的意义.
do while 循环的语法格式如下:
[init_statement] do { statement; [iteration_statement] }while (test_expression);
让我们试试写一个例子
public class DoWhileTest { public static void main(String[] args) { //定义变量 count int count = 20; //执行 do while 循环 do { System.out.println(count); //迭代语句 count++; } while (count < 10); System.out.println("循环结束!"); } }
从上面的例子就可以看出, 即使 test_expression 循环条件一开始就是 false .
do while 也会执行循环体一次. 屌不屌 -,-
for循环
for 循环是更加简洁的循环语句.大部分情况下, for 循环可以代替 while 循环, do while 循环.
for 循环的语法格式:
for ([init_statement]; [test_expression]; [iteration_statement]) { statement; }
for 循环时, 先执行 循环的初始化语句 init_statement, 初始化语句只执行一次.
在执行循环体之前, 计算 test_expression 循环条件的值, 如果循环条件返回 true , 则开始执行循环体.
循环体执行结束后 执行循环迭代语句 iteration_statement .
写个例子试试看
public class ForTest { public static void main(String[] args) { //循环的初始化条件 / 循环条件 / 循环迭代语句 都在下面一行 for (int count = 0; count < 10; count++) { System.out.println(count); } System.out.println("循环结束!"); } }
在上面的例子中, for 循环初始化语句只有一个, 循环条件也只有一个.
实际上 for 循环允许同时指定多个初始化语句, 循环条件也可以是一个 包含逻辑运算符 的表达式.
写个例子试试.
public class ForTest2 { public static void main(String[] args) { //同时定义 三个 初始化变量, 使用 && 来组合多个表达式 for (int b = 0, s = 0, p = 0; b < 10 && s < 4 && p < 10; p++) b311 { System.out.println(b++); System.out.println(++s + p); } } }
这个例子并不复杂, 对于输出的结果你可能刚开始有点懵逼. 但是你要静下心来, 用脑子想想这里面到底发生了什么. 给你个提示 ++ 在前和在后是有区别的.
上面代码中初始化变量有3个, 但是只能有一个声明语句. (b, s, p 都是int 对吧?)
因此, 如果在初始化表达式中声明多个变量, 那么这些变量都具有相同的数据类型.
控制循环结构
有时候你可能需要循环在得到自己想要的结果后就结束.或者跳过自己不想要的循环结果.
java 提供给你 continue 和 break 来做这种事情.
还有一个 return 更牛逼一点, 它可以结束整个方法. 自然方法内的循环也会被结束.
使用 break 结束循环
让我们直接举栗说明public class BreakTest { public static void main(String[] args) { //写一个简单的 for 循环 for (int i = 0; i < 10; i++) { System.out.println("i 的值是:" + i); if (i == 2) { //如果满足 i == 2 结束循环 break; } } } }
在上面的例子中, 当 i 等于 2 时, 循环体内执行了 break 语句, 该循环结束.
使用 continue 忽略本次循环, 开始下一次
continue 并不会像 break 那样终止循环, 而是跳过一次, 接着干.举栗说明
public class ContinueTest { public static void main(String[] args) { //一个简单的 for 循环 for (int i = 0; i < 3; i++) { System.out.println("i 的值是:" + i); if(i == 1) { //忽略本次循环 !剩下语句! continue; } System.out.println("我是一个小尾巴"); } } }
从上面程序的结果来看, 当 i 等于1 时. 没有输出那个小尾巴.
因为程序执行到 continue 时, 忽略了当次循环中 continue 后面的代码.
可能你对于这个家伙的用法还不太熟, 不过没关系, 经常用用就熟了.
使用 return 结束方法
return 关键字并不是专门用于结束循环的.return 的功能是结束一个方法.
循环在方法内, 自然也被一起干掉.
举栗说明
public class ReturnTest { public static void main(String[] args) { //一个简单的 for 循环 for (int i = 0; i < 3; i++) { System.out.println("i的值是:" + i); if(i == 1) { return; } System.out.println("我是小尾巴"); } } }
当程序运行到 return 时, 方法就被结束了. 自然尾巴啥的都没有了.
结尾
如果你想学习更多JAVA知识, 可以 点我进入目录页相关文章推荐
- PHP8新特性之match表达式
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序