控制流程

java的控制流程和C和C++基本一致,只是不能使用goto语句,不过break语句可以带标签,实现从内层循环跳出的目的。标签可以放在for或者while前面。如下:

  1. package com.zjf;
  2.  
  3. import java.io.Console;
  4. import java.util.Scanner;
  5.  
  6. public class Test {
  7.  
  8.    public static void main(String[] args) {
  9.       outer: for(int i=0;i<5;i++){
  10.             for(int j=0;j<5;j++){
  11.                 System.out.println("i="+i+"j="+j);
  12.                 if(j==3){
  13.                     break outer;
  14.                 }
  15.             }
  16.         }
  17.     }
  18. }

块作用域:

java是块作用域,这点和js不一样。

while循环

while循环有两种:

while()

{

//do some thing

}

do

{

//do some thing

}

while()

for循环

for(初始化;继续循环的条件,更新)

虽然如此,不建议在for循环里有复杂逻辑,最好是对变量的初始化和大小判断这种简单逻辑。

如果在循环重视使用浮点数进行检测,结果可能出现死循环。如下写法会死循环

  1. package com.zjf;
  2.  
  3. public class Test {
  4.  
  5.    public static void main(String[] args) {
  6.       for(double d = 0D; d != 1D;d+=0.1D)
  7.       {
  8.          System.out.println(d);
  9.       }
  10.     }
  11. }

我们换一种方式看看输出:

  1. package com.zjf;
  2.  
  3. public class Test {
  4.  
  5.    public static void main(String[] args) {
  6.       for(double d = 0D; d < 1D;d+=0.1D)
  7.       {
  8.          System.out.println(d);
  9.       }
  10.     }
  11. }

输出:

0.0

0.1

0.2

0.30000000000000004

0.4

0.5

0.6

0.7

0.7999999999999999

0.8999999999999999

0.9999999999999999

多重选择:switch语句

switch语句只能作用在整形和枚举上。不能测试字符串,也不能测试浮点型。

switch语句中的多个case不能重复,所以只能满足一个,不可能满足多个。但是如果你不在每个case后面加上break,就会继续走到default。如下:

  1. package com.zjf;
  2.  
  3. public class Test {
  4.  
  5.    public static void main(String[] args) {
  6.       int i = 3;
  7.       switch (i) {
  8.       case 1:
  9.          System.out.println(1);
  10.       case 2:
  11.          System.out.println(2);
  12.       case 3:
  13.          System.out.println(3);
  14.       default:
  15.          System.out.println("default");
  16.       }
  17.     }
  18. }

结果:

default

作者在书上说,有可能触发多个case分支,如果case语句没有加上break,那么就会接着执行下一个case分支,所以要尽量不要使用break。这段话说的没有错,是可以触发多个分支,但是语法上要求了case的键不能重复,否则就会编译报错。那么java这么设计的目的何在呢,我猜测,如果不加上break,那么每个case都会走到default,这样就可以在default中加上一些公共逻辑。

最新文章

  1. 关于ios 3D变换 CGAffineTransformIdentity
  2. Google类VR设备知识
  3. MYSQL57密码策略修改
  4. [系统] 安装Ubuntu 双系统 - 失败
  5. 优化DB2缓冲页的大小
  6. Office 365 for TechNet 版本国家地区没有中国选项
  7. android 安全退出应用程序的几种方法
  8. Windbg简单介绍
  9. QSS 样式表 (一)
  10. Django写的投票系统3(转)
  11. ODAC配置
  12. 解决-Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HO问题
  13. Maven-环境搭建以及建立Maven项目
  14. 2.sass变量、嵌套、混合(mixin)、继承拓展、@import、comment
  15. ios开发-第二天
  16. (转载)JVM知识小集
  17. c++中一个多态的实例
  18. float浮动的世界
  19. 用docker-compose部署postgres+ postgis
  20. OpenGL——二次曲面函数(球面-圆锥面-圆柱面)

热门文章

  1. Linux服务器重启后IP变掉的处理方式
  2. Python unittest 之 BeautifulReport可视化报告
  3. Python学习之表的介绍
  4. #Java学习之路——基础阶段二(第十四篇)
  5. php连接mysql,数据CRUD操作
  6. python-爬取糗事百科热图
  7. 一本值得你反复研读的Python佳作《Python编程从0到1》
  8. vue --》elementUI 中 el-table组件 如何实现点击列,让该列高亮显示 ?
  9. Linux下路由配置梳理(转)
  10. 手写数字识别 卷积神经网络 Pytorch框架实现