Java逻辑控制语句

一、Java的逻辑控制语句的大体分类:

二、顺序结构

1.顺序结构:即按顺序执行代码(从头到尾按顺序执行代码),如
public class Main{
    public static void main(String args[]){
        int num1  = 10;
        int num2 = 20;
        System.out.println(num1 + num2);//先输出30
        System.out.peintln("111");//再输出111
        System.out.peintln("222");//然后输出222
        System.out.peintln("333");//最后输出333
    }
}

三、选择结构(又叫分支结构)

 1.if语句
  • 语法格式:
    • 写法一:
      if(布尔表达式){
      //代码语句
      }

      代码示例:

      int x = 10;
      if (x > 5) {
          System.out.println("x 大于 5");
      }

    • 写法二:
      • if(布尔表达式) {
        //代码语句
        }else{
        //代码语句
        }

        代码示例:

        int x = 10;
        if (x > 15) {
            System.out.println("x 大于 15");
        } else {
            System.out.println("x 不大于 15");
        }

      • 写法三:
        if(布尔表达式){
        //代码语句
        }else if(布尔表达式){
        //代码语句
        }
        else{
        //代码语句
        }

        代码示例:

        int x = 10;
        if (x > 15) {
            System.out.println("x 大于 15");
        } else if (x > 5) {
            System.out.println("x 大于 5,但不大于 15");
        } else {
            System.out.println("x 不大于 5");
        }
        

  • 若if()的括号内的布尔表达式的结果为true则执行if语句内的代码。若if()括号内的值为flase,且还有else if()语句,若else if()的括号内的布尔表达式的值为true则执行else if语句内的代码,否则执行else语句内的代码;若else if()的括号内的布尔表达式的值为flase,则执行else语句内的代码
  • 注意事项:
    • if()语句和else if()语句的括号内必须为布尔表达式!!
    • 分号问题:
      int num = 1;
      if(num == 0);
      {
          System.out.println("hello world");//输出hello world
      }

      这段代码一定会输出hello world,因为无论如何System.out.println("hello world");这一句代码一定会实现。原因是if(num == 0);这一句代码后面有分号,有分号就证明if(num == 0)是一个单独的语句,if在执行的时候是不存在执行语句的,故会直接在判断完if()语句括号内的布尔表达式的真值之后继续向下执行,也就是继续向下执行System.out.println("hello world");

      //上面的代码等价于
      int num = 1;
      if(num == 0);
      System.out.println("hello world");//输出hello world

    • 悬垂else问题:if/else语句中可以不加大括号也能向下执行语句,但是只能执行一句,即跟if/else最近的语句

      int num1 = 10;
      if(num1%2!=0)
      System.out.println(num1 + "为奇数");//num1为奇数就执行这一句代码
      else
      System.out.println(num1 + "为偶数");//num1为偶数就执行这一句代码
      
      int num2 = 13;
      if(num2%2!=0)
      System.out.println(num2 + "为奇数");//if语句能管得到的只有这一句
      num2++;//这一句一定会执行
      System.out.println(num2);//输出num2为14

2.switch语句
  • 语法格式:
    switch(表达式){
        case 常量表达值1:{
                语句1;
                break;
            }
     case 常量表达值1:{
                语句1;
                break;
            }
     case 常量表达值1:{
                语句1;
                break;
            }
    …………
        default:{
                内容不满足时的执行语句;
                break;
            }
    }

  • switch(表达式)语句括号内表达式的值不能是float、double、long、boolean类型的数据,如switch(a>0)这个就会报错,因为a>0是boolean类型的语句,不能写在switch的括号里;byte、char、short、int、String、枚举类型可以写在switch()的括号里

    • 使用 int 类型的 switch 示例:

      public class SwitchExample {
          public static void main(String[] args) {
              int num = 2;
              String day = "Monday";
              
              // 使用 int 类型的 switch
              switch (num) {
                  case 1:
                      System.out.println("数字为1");
                      break;
                  case 2:
                      System.out.println("数字为2");
                      break;
                  default:
                      System.out.println("未知数字");
              }
              
              // 使用 String 类型的 switch
              switch (day) {
                  case "Monday":
                      System.out.println("星期一");
                      break;
                  case "Tuesday":
                      System.out.println("星期二");
                      break;
                  default:
                      System.out.println("其他星期几");
              }
          }
      }

    • 使用 String 类型的 switch 示例:

      public class StringSwitchExample {
          public static void main(String[] args) {
              String day = "Monday";
              
              switch (day) {
                  case "Monday":
                      System.out.println("星期一");
                      break;
                  case "Tuesday":
                      System.out.println("星期二");
                      break;
                  case "Wednesday":
                      System.out.println("星期三");
                      break;
                  default:
                      System.out.println("其他星期几");
              }
          }
      }
      

    • 使用枚举类型的 switch 示例:

      public class EnumSwitchExample {
          enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }
          
          public static void main(String[] args) {
              Day day = Day.MONDAY;
              
              switch (day) {
                  case MONDAY:
                      System.out.println("星期一");
                      break;
                  case TUESDAY:
                      System.out.println("星期二");
                      break;
                  case WEDNESDAY:
                      System.out.println("星期三");
                      break;
                  default:
                      System.out.println("其他星期几");
              }
          }
      }

  • case后的常量值不能重复,否则会报错,如 

                case 1:
                System.out.println("数字为1");
                break;
            case 1:
                System.out.println("数字为2");
                break;

        这个代码会编译出错,因为case后的常量值重复了

  • switch()的括号内不能表达复杂的条件,比如num>10&&num<20这就不行,放进switch的括号里会报错
  • switch语句可以嵌套
    public class NestedSwitch {
        public static void main(String[] args) {
            int outerSwitch = 1;
            int innerSwitch = 2;
            
            switch (outerSwitch) {
                case 1:
                    switch (innerSwitch) {
                        case 1:
                            System.out.println("内部 switch - 1");
                            break;
                        case 2:
                            System.out.println("内部 switch - 2");
                            break;
                        default:
                            System.out.println("内部 switch - 默认");
                    }
                    break;
                case 2:
                    System.out.println("外部 switch - 2");
                    break;
                default:
                    System.out.println("外部 switch - 默认");
            }
        }
    }

四、循环结构

1.for循环
  • 语法格式:
for(表达式1;表达式2;表达式3){
//表达式1是用于初始化循环变量的初始值设置
//表达式2是循环条件,满足条件则继续循环,否则结束循环
//表达式3是更新循环变量
//代码语句
}
  • 代码示例:
//用for循环打印1-10
int n = 10;
for(int i = 1;i <= n;i ++){
    System.out.println(i);
}
  • for之后不写{ }则这只能管到for紧跟的那句代码的执行
  • for();和for()语句括号内定义的变量i

        若将代码改成

                int n = 10;
                for(int i = 1;i <= n;i ++);{
                           System.out.println(i);
                }

        for(int i = 1; i <= n; i ++); 这个 for 循环实际上没有循环体(因为它后面直接跟了一个分号),所以它会迭代 i 从 1 到 10,但循环体内不执行任何操作。

并且会报错,for(int i = 1; i <= n; i ++); for语句后有分号,意味着for循环到此结束,i是for循环内的变量,只在for内有效,出了for循环之后i无效了,故在{ System.out.println(i); } 这个代码块是一个独立的语句块,它会在 for 循环执行完毕后被执行,而i不属于for语句之外的语句,故System.out.println(i)这句代码会在i那里报错。

  • for循环内定义的变量
for (int i = 1; i <= 5; i++) {
    int square = i * i; // 在循环内部定义变量 square,并赋值为 i 的平方
    System.out.println("Square of " + i + " is: " + square);
}
此处代码的i和square都属于是for循环体内定义的变量,它们属于for循环体内,出了for循环这两个变量就没有用了,再额外使用没有在外部定义的i和square的话就会报错。并且在不同的for循环体内变量可以是一样的,即两个不同的for循环可以均使用i和square作为它们内部的变量,不会报错,如:
for (int i = 1; i <= 5; i++) {
    int square = i * i; // 在循环内部定义变量 square,并赋值为 i 的平方
    System.out.println("Square of " + i + " is: " + square);
}

for (int i = 1; i <= 9; i++) {
    int square = i * i; // 在循环内部定义变量 square,并赋值为 i 的平方
    System.out.println("Square of " + i + " is: " + square);
}
2.while循环
  • 语法格式:
whiel(循环条件){
//循环语句;
}
  • 循环条件一定要为布尔表达式,循环条件的值为true则执行循环,false则不执行循环
    int num = 9;
    while(num>0){
        System.out.println(num);
        num--;
    }

  • 与if类似,while下面的语句可以不写{ },但是不写的话,while只能管while后紧跟while的那句代码的执行

  • 与if类似,while后面不要多写分号否则可能导致循环不能正确执行,
    int num = 1;
    while(num <= 10);{
        System.out.println(num);
        num++;
    }

while(num <= 10);因为有分号,所以它是一句单独的语句,又因为num = 1 ,满足小于等于10的条件,所以while语句恒成立,所以会一直循环下去,即死循环,System.out.println(num)和num++这两句语句永远没有执行的机会

3.do……while循环
  • 语法格式:(先执行循环语句,在判定循环条件,循环条件成立则继续执行循环,否则循环结束)
do{
//循环语句    
}while(循环条件);//这里while一定要加分号!!!
  • 代码示例:
int count = 1;  
do {
    System.out.println("Count is: " + count);
    count++;
} while (count <= 5);
  • do……while和while的区别:

        do-while 循环

  • 执行顺序:先执行循环体内的代码,然后再检查循环条件是否为真。
  • 特点:无论循环条件是否为真,do-while 至少会执行一次循环体内的代码。

        while 循环

  • 执行顺序:先检查循环条件是否为真,如果为真则执行循环体内的代码,然后再重复这个过程;如果条件为假,则直接跳过循环体。
  • 特点:如果初始时循环条件就为假,则 while 循环内的代码一次也不会执行。
4.扩展:continue和break的区别
  • break:某次循环执行完之后不用再继续执行剩下的循环时,使用break结束循环
    for (int i = 1; i <= 10; i++) {
        if (i == 5) {
            break; // 当 i 等于 5 时跳出循环
        }
        System.out.println(i);
    }
    /*输出:
    1
    2
    3
    4
    5
    */

  • continue:在某次循环下,当次循环不用再继续执行了,要跳过该次执行,进入下一次循环执行,则使用continue跳过当次执行
    for (int i = 1; i <= 5; i++) {
        if (i % 2 == 0) {
            continue; // 如果 i 是偶数,则跳过本次循环
        }
        System.out.println(i);
    }
    /*输出:
    1
    3
    5
    */

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超爱小狗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值