选择结构

if语句:

  • 当条件表达式为true时,就是会执行{}代码,如果为false,就不会执行

    语法

    1. if (表达式) {
    2. 如果表达式为 true 时执行的代码
    3. }

    实例

    int a=0;
          if (a==1){
              System.out.println(a);
    

if else语句:

  • if else语句: 当条件表达式true时,执行代码1,如果为false,执行代码2

    语法

    if (条件) {
      条件为 true 时执行的代码块(执行代码1)
    } else { 
      条件为 false 时执行的代码块(执行代码2)
    }
    

    实例

    if(a==0){
              System.out.println(1);
          }else {
              System.out.println(3);
          }
    

    if-else-if语句

  • if 语句至多有 1 个 else 语句,else 语句在所有的 else if 语句之后。

  • if 语句可以有若干个 else if 语句,它们必须在 else 语句之前。
  • 一旦其中一个 else if 语句检测为 true,其他的 else if 以及 else 语句都将跳过执行

    语法

    if (条件 1) {
      条件 1 为 true 时执行的代码块
    } else if (条件 2) {
      条件 1 为 false 而条件 2 为 true 时执行的代码块
    } else {
      条件 1 和条件 2 同时为 false 时执行的代码块
    }
    

    实例

    ```java if (time < 10) { greeting = “Good morning”; } else if (time < 18) { greeting = “Good day”; } else { greeting = “Good evening”; }

//90-100 优秀 80-89 好 70-79 良 60-69 及格 60以下 不及格 public static void main(String[] args) { int score = 100; if(score<0 || score>100){ System.out.println(“你的成绩是错误的”); }else if(score>=90 && score<=100){ System.out.println(“你的成绩属于优秀”); }else if(score>=80 && score<90){ System.out.println("你的成绩属于好"); }else if(score>=70 && score<80){ System.out.println("你的成绩属于良"); }else if(score>=60 && score<70){ System.out.println(“你的成绩属于及格”); }else { System.out.println(“你的成绩属于不及格”); } }}

<a name="fVnyF"></a>
### 
<a name="kH7Kg"></a>
## 嵌套的 if…else 语句

- 使用嵌套的 if…else 语句是合法的。也就是说你可以在另一个 if 或者 else if 语句中使用 if 或者 else if 语句
<a name="Nl2jU"></a>
#### 语法
```java
if(布尔表达式 1){
   ////如果布尔表达式 1的值为true执行代码
   if(布尔表达式 2){
      ////如果布尔表达式 2的值为true执行代码
   }
}

实例

public class Test {

   public static void main(String args[]){
      int x = 30;
      int y = 10;

      if( x == 30 ){
         if( y == 10 ){
             System.out.print("X = 30 and Y = 10");
          }
       }
    }
}

switch语句:

switch:条件成立执行分支,条件不成立继续向下判断分支,如果分支都不满足,则执行default语句块
支持类型:intbyteshortString字符串枚举类型
注意点:

  • 每个语句后面必须加break,防止case穿透
  • default语句必须放到最后

语法

 switch (表达式) {
        case 常量表达式或枚举常量:
            语句;
            break;
        case 常量表达式或枚举常量:
            语句;
            break;
        ......
        default: 语句;
            break;
    }

实例

switch (a){
           case 1 :
               System.out.println("第一名");
               break;
           case 2:
               System.out.println("第二名");
               break;
           case 3:
               System.out.println("第三名");
               break;
           default:
               System.out.println("没有名次");
       }

总结:

  • if -else: 二选一
  • if-else-if:范围多选一
  • switch:定值多选一

    循环语句:

    while语句:

    先判断条件表达式是否成立,再执行语句块,如果不成立则跳过语句块,执行后面的语句

    语法

    初始化值
    while (表达式){
                 语句块
                 变量自增(自减);
             }
    

    实例

    public class TestWhile{
      public static void main(String[] args){
          //功能:1+2+3+4+5
          //1.定义变量:
    
          int num = 1;//条件初始化
    
          //2.定义一个求和变量,用来接收和:
          int sum = 0;
    
          while(num<=5){//条件判断
              sum += num;//循环体
              num++;//迭代
          }
          //3.输出和
          System.out.println(sum);
      }
    }
    
    • 将部分代码重复执行
    • 循环四要素:条件初始化、条件判断、循环体、迭代(初始化谁就判断谁,判断谁就迭代谁)

do while语句:

执行循环中的语句块,然后在判断while中的表达式,如果成立再次执行,如果不成立跳出循环,执行后面的语句,do-while循环的循环体至少执行一次

语法

初始化值
do {
              语句块
              变量自增(自减);
          }while (表达式);

实例

public class Test {
    public static void main(String[] args) {

        //while循环:先判断再执行
        int a = 0;
        while (a < 0) {
            System.out.println(a);
            a++;
        }
        System.out.println("-----");


        //do-while循环:先执行再判断
        a = 0;
        do {
            System.out.println(a);
            a++;
        } while (a < 0);
    }
}

while和do-while的区别:

  • while: 先判断,再执行
  • do-while: 先执行,再判断—-》至少被执行一次,从第二次开始才进行判断

for语句:

先判断初始化值``(循环变量),第二步判断循环条件会否成立,第三步执行语句块,第四部循环变量自增,如果判断循环条件不成立,则直接跳出循环

语法

 for (初始化值;循环条件;变量自增(自减);){
                语句块;
            }

实例

public class ForDemo01 {
    public static void main(String[] args) {

             //初始化  条件判断  迭代
        for (int i = 0; i < 100; i++) {
            System.out.println(i);
        }
        System.out.println("for循环结果");
    }
}

习题题💋

public class ForDemo02 {
    public static void main(String[] args) {
        //计算0到100直接的奇数和,偶数和
        int oddSum = 0;
        int evenSum = 0;
        for (int i = 0; i <=100; i++) {
            if (i%2!=0){//基数
                oddSum =oddSum +i;
            }else {
                evenSum = evenSum +i;
            }
        }
        System.out.println("基数和"+oddSum);
        System.out.println("偶数和"+evenSum);
    }
}

for语句增强版:

常用于数组遍历打印

 int stu[]={1,2,4,87,7,6,6,21,2,7,7,445,8,8};
        for (int i : stu) {
            System.out.print(i+" ");
        }
  • 优点:代码少
  • 缺点:不能直接获取索引

循环嵌套:

所有循环体中可以嵌套另外任意一个其他循环体,外层循环执行一遍,内层循环执行一个完整循环。
99乘法表打印:

 for (int i=1;i<=9;i++){
            for (int j=1;j<=i;j++){
                System.out.print(j+"*"+i+"="+i*j+"\t");
            }
            System.out.println();
        }
public class Demo17LoopHourAndMinute {
    public static void main(String[] args) {
        for (int hour = 0; hour < 24; hour++) { // 外层控制小时

            for (int minute = 0; minute < 60; minute++) { // 内层控制小时之内的分钟
                System.out.println(hour + "点" + minute + "分");
            }

        }
    }
}

死循环

永远停不下来的循环,叫做死循环
死循环的标准格式:

while (true) {
    循环体
}
public class Demo16DeadLoop {
    public static void main(String[] args) {
        while (true) {
            System.out.println("I Love Java!");
        }

        // System.out.println("Hello");
    }
}

三种循环的区别

  1. 如果条件判断从来没有满足过,那么for循环和while循环将会执行0次,但是do-while循环会执行至少一次。
    2. for循环的变量在小括号当中定义,只有循环内部才可以使用。while循环和do-while循环初始化语句本来就在外面,所以出来循环之后还可以继续使用。

    public class Demo13LoopDifference {
     public static void main(String[] args) {
         for (int i = 1; i < 0; i++) {
             System.out.println("Hello");
         }
         // System.out.println(i); // 这一行是错误写法!因为变量i定义在for循环小括号内,只有for循环自己才能用。
         System.out.println("================");
    
         int i = 1;
         do {
             System.out.println("World");
             i++;
         } while (i < 0);
         // 现在已经超出了do-while循环的范围,我们仍然可以使用变量i
         System.out.println(i); // 2
     }
    }
    

    跳出语句:

    break语句:

    如果在循环体中加入break语句则结束本次循环

break关键字的用法有常见的两种:

  • 可以用在switch语句当中,一旦执行,整个switch语句立刻结束。
  • 还可以用在循环语句当中,一旦执行,整个循环语句立刻结束。打断循环。

关于循环的选择,有一个小建议:凡是次数确定的场景多用for循环;否则多用while循环

public class Demo14Break {
    public static void main(String[] args) {
        for (int i = 1; i <= 10; i++) {
            // 如果希望从第4次开始,后续全都不要了,就要打断循环
            if (i == 4) { // 如果当前是第4次
                break; // 那么就打断整个循环
            }
            System.out.println("Hello" + i);
        }
    }
}

如果循环嵌套中需要让内层循环中的break控制到外层循环,可以给循环加一个标识符,从而达到控制外层循环的效果。

outer: for(int i=0;i<10;i++){
   inner: for(int j=1;j<=10;j++){
        if(j>=5){
            break outer;
    }
  }
}

continue语句:

一旦执行,立刻跳过当前次循环剩余内容,马上开始下一次循环
如果在for循环体中用continue语句结束本次循环,需要把循环控制条件自减一位。

 for (int i = 1; i <= 5; i++) {
            System.out.print("请输入第" + i + "个学生的成绩:");
            double x = input.nextDouble();
            if (x < 0 || x > 100) {
                System.out.println("成绩不合法,请重新输入");
                i--;
                continue;
            }
            sum = sum + x;
        }

return语句:

结束当前方法,如果是调用,则返回调用该方法的语句处