• Java 控制语句:循环、条件判断


       基础很重要,基础很重要,基础很重要。重要的事情说三遍,。

         程序设计中的控制语句主要有三种:顺序、分支和循环。我们每天写的代码,除了业务相关,里面会包含大量的控制语句。但是控制语句的基本使用,是否有些坑我们需要避免,以及一些常见的规范我们是否遵守了呢,我们来简单复习一下。

       控制语句包含:

    1、分支语句:if和switch

    2、循环语句:while、for、do-while(使用较少),(在c#中还有一种语法糖foreach、linq的each等,这里不比较c#)

    3、跳转语句:break、continue、return和throw

    看到这些控制语句,这是我们最熟悉的亲人啊,我们每天敲的代码,有多少是if,说多了都是泪。

    下面逐个展开,

        分支语句:if和switch,分支语句是一种控制机制,使程序具有有限的判断能力,可能根据不同的输入,执行不同的操作。分支语句又称条件语句,使部分程序可根据某些表达式的值被有选择的执行。

    对于分支语句的单元测试比较麻烦,需要传递不同的输入,来进行验证。

    if语句:if 条件的值是true,就会执行if内部逻辑,否则会执行else。

    注意:

    1、对于if、else if、else的判断语句,只会且只会执行其中的一个逻辑。

    2、if 中的条件表达式计算的结果必须为boolean类型,其他类型的编译会失败

    3、alibab JAVA开发规范:【强制】if/for/while/switch/do 等保留字与左右括号之间都必须加空格。保存格式化代码,IDE会自动添加空格

    4、alibab JAVA开发规范:【强制】在 if/else/for/while/do 语句中必须使用大括号,即使只有一行代码,避免使用下
    面的形式:if (condition) statements。简单描述就是,if内的逻辑必须包含大括号,即使是空。

    5、alibab JAVA开发规范:【推荐】推荐尽量少用 else, if-else 的方式可以改写成:
    if(condition){

    return obj;
    }
    // 接着写 else 的业务逻辑代码;
    说明:如果使用要 if-else if-else 方式表达逻辑,【强制】请勿超过 3 层,超过请使用状态设计模式

    通过代码简单回忆下,

     1          String name = "郭志奇";
     2          if (name == "郭语晨") {
     3              System.out.println("我闺女");
     4          } else if (name.contains("袁")) {
     5              System.out.println("我媳妇");
     6          } else if (name.toUpperCase() == "GUO") {
     7              System.out.println("我的姓");
     8          } else {
     9              {
    10                  System.out.print("我也不知道是什么");
    11              }
    12          }

    switch语句:

     1      name = "郭语晨";
     2      switch (name) {
     3      case "郭语晨":
     4          System.out.println("我闺女");
     5      case "袁":
     6          System.out.println("我媳妇");
     7          break;
     8      case "GUO":
     9          System.out.println("我的姓");
    10          break;
    11      default:
    12          System.out.println("我也不知道是什么");
    13          break;
    14      }

    程序输出:

    image

    注意:

    1、break是可以省略的,但是除了最后一个default语句对应的break,其他case的break尽量别省略。最优解:所有的break都保留

    2、如果去掉break,会出现什么?看上面你的代码,case “郭语晨”后边的break是没有的,输出了两行。这就表示,如果break去除,那么程序会继续匹配下面的case,而不会停止。

    3、alibaba  开发规范:【强制】在一个 switch 块内,每个 case 要么通过 break/return 来终止,要么注释说明程序
    将继续执行到哪一个 case 为止;在一个 switch 块内,都必须包含一个 default 语句并且放在
    最后,即使它什么代码也没有

    4、switch的表达式计算结果只能是int、bool、char、short、string等类型,不能是long。原因:long代表的精度很大,存在误差。

    image

    循环语句:循环语句使程序代码循环执行,有三种循环构造,while、do-while、for。java5之后有for-each

    for和while循环在执行循环体之前测试循环条件,do-while在执行完循环体之后测试循环条件。这就意味着for和while循环可能连一次循环体都未执行,do-while将至少执行一次循环体。

    while语句:

    while每次执行都会判断循环条件,尽量避免出现无限循环的情况。

     1          int index = 0;
     2          while (name == "郭志奇") {
     3              index++;
     4              System.out.println(index + "");
     5              System.out.println(String.valueOf(index));
     6              if (index == 3675) {
     7                  System.out.println("太累了,退出");
     8                  break;
     9              }
    10          }

    注意:

    1、退出while循环有几种方式,break、更改循环判断条件、throw

    2、总之 不要出现无限循环。

    3、while循环条件语句只能写一个表达式,而且是衣蛾布尔型表达式。如果需要循环变量,必须在while之前对循环变量畸形初始化。

    do-while 和while类似,来段代码结束。

     1       index = 0;
     2      do {
     3          index++;
     4          System.out.println(index);
     5          if(index==564)
     6          {
     7              System.out.println("退出循环 太累了");
     8              break;
     9          }            
    10      } while (name == "郭志奇");


    注意:do-while循环会在判断循环体之前先执行一次

    使用最广泛、最重要的for循环:

    for(初始化;循环条件;迭代){}

    for循环执行,首先会执行初始化语句,初始化循环变量和其他变量,然后会判断循环条件是否满足,如果满足,继续执行循环体并计算迭代语句,之后再次判断循环条件。 请注意各个语句的执行先后顺序,在特定情况下会用到。

    image

    来段代码结束

    1 for (int i = 0; i <= 292; i++) {
    2          System.out.println("当前数值为" + i);
    3          if (i == 2) {
    4              continue;
    5          }
    6          if (i == 43) {
    7              break;
    8          }
    9      }

    注意:

    1、for循环不需要提前声明条件变量

    2、执行顺序:初始化变量--》循环条件是否满足--》计算迭代语句。如此循环

    3、break会跳出循环,continue会继续下次执行

    特殊情况下,for实现无限循环,只需将判断及迭代语句删除

    1 for (;; index++) {
    2              System.out.println("无限循环");
    3              if (index == 4) {
    4                  System.out.println("退出无限循环");
    5                  break;
    6              }
    7          }

    for-each 语句:

    for-each是for循环的一个变体,比起c#的foreach 语法接近。主要作用是用来遍历集合元素,对于集合的遍历,用for-each比较简单方便,不需要根据集合索引去定位。

     1    List<String> conn = new ArrayList<String>();
     2      conn.add("ddd");
     3      conn.add("mmm");
     4      conn.add("eee");
     5      // 使用for循环执行遍历
     6      for (int i = 0; i < conn.size(); i++) {
     7          System.out.println("for循环:" + conn.get(i));
     8      }
     9 
    10     for (var item : conn) {
    11          System.out.println("foreach循环" + item);
    12      }

    个人感觉for-each循环很只是提供一个语法糖。

    虽然我们天天在敲代码,但是基础知识还是要偶尔复习下,也许能发现其中某个点我们理解有错误。减少bug才是我们的终极目标

  • 相关阅读:
    spring+ springmvc + websocket+sockjs 404/200
    spring+ springmvc + websocket+sockjs 404/200
    Java中assert(断言)的使用
    Java中assert(断言)的使用
    shiro 静态页面资源不显示 解决方案
    shiro 静态页面资源不显示 解决方案
    彻底解决 intellij IDEA 卡顿 优化笔记
    彻底解决 intellij IDEA 卡顿 优化笔记
    bigdecimal 保留小数位
    bigdecimal 保留小数位
  • 原文地址:https://www.cnblogs.com/jiagoushi/p/9937398.html
Copyright © 2020-2023  润新知