1、流程控制的三种结构

  • 顺序结构
  • 分支结构
  • 循环结构

2、顺序结构

  • 顺序结构就是程序从上到下一行一行的执行,中间没有任何判断和跳转
  • 如果main方法多行代码之间没有任何流程控制
    ,则程序总是从上向下依次执行,排在前面的代码先执行,排在后面的代码后执行

3、分支结构

  • 单/双分支结构:if-else语句
  • 多分支结构:switch语句
  • 举例
  • 单条件
import java.util.Scanner;

public class Test {
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        System.out.println("输入判断条件:");
        boolean judge = scan.nextBoolean();
        if(judge){
            System.out.println("正确");
        }
    }
}
  • 双条件
import java.util.Scanner;

public class Test {
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        System.out.println("输入判断条件:");
        boolean judge = scan.nextBoolean();
        if(judge){
            System.out.println("正确");
        }
        else{
            System.out.println("错误");
        }
    }
}
  • 多条件
import java.util.Scanner;

public class Test {
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        String condition = scan.nextLine();
        switch(condition){
            case "A":
                System.out.println("score between 100 and 90");
                break;
            case "B":
                System.out.println("score between 90 and 80");
                break;
            default:
                System.out.println("no score");
                break;
        }
    }
}

4、if-else语句常见错误

  • 如果if、else、else if后的执行体只有一行语句时,友友们想偷懒的话,可以省略花括号,但是最好不要省略,因为花括号会有更好的可读性,还可以减少发生错误的可能。
  • 对于任何的if else语句,else本身就是一个条件

5、循环结构

  • while循环语句
    -while循环的用法:
public class Test {
    public static void main(String[] args){
        int i = 1;
        int sum = 0;
        while(i<=100){
            sum = sum + i;
            i++;
        }
        System.out.println(sum);
    }
}
  • do while循环语句
    -举例
public class Test {
    public static void main(String[] args) {
        int i = 1;
        int sum = 0;
        do
        {
            sum = sum + i;
            i++;
        }while(i <= 100);
        System.out.println(sum);
    }
}
  • for循环语句
    -举例
public class Test {
    public static void main(String[] args) {
        int i = 1;
        int sum = 0;
        for(;i<=100;i++)
        {
            sum = sum + i;
        }
        System.out.println(sum);
    }
}

6、break关键字:用于从一个循环中跳出
7、break+标签:可以从嵌套循环中跳出(java中标签就是标识符,它必须放在循环语句之前才有作用)

  • 举例
public class Test {
    public static void main(String[] args){
        outer:
        for(var i=0;i<5;i++){
            for(var j=0;j<5;j++){
                System.out.println("i="+i+"\tj="+j);
                if(j==2){
                    break outer;
                }
            }
        }
        System.out.println("break!!!");
    }
}

8、continue用于中止本次循环,从 下一次循环继续执行

  • 举例1:continue中止本次循环
public class Test {
    public static void main(String[] args){
        for(var i=0;i<3;i++){
            System.out.println("i="+i);
            if(i==1){
                continue;
            }
            System.out.println("no continue");
        }
    }
}
  • 举例2:continue加标识符中止本个循环语句
public class Test {
    public static void main(String[] args){
        outer:
        for(var i=0;i<5;i++){
            for(var j=0;j<3;j++){
                System.out.println("i="+i+"\tj="+j);
                if(j==1){
                    continue outer;
                }
            }
            System.out.println("continue!!!");
        }
    }
}
  • 举例3:return中止所有循环
public class Test {
    public static void main(String[] args){
        for(var i=0;i<5;i++){
            System.out.println("i="+i);
            if(i==2){
                return;
            }
            System.out.println("return!!!");
        }
    }
}

9、一维数组

  • java的数组:
    -定义方式1:Type[] a={a_1,…,a_n};
    -定义方式2:Type[] a=new Type[]{a_1,…,a_n};
    -定义方式3:Type[] a=new Type[n];
  • java的数组:所有元素具有相同的数据类型
  • java的数组:长度固定,不可改变(一旦数组的初始化完成,数组在内存中所占的空间将被固定下来。)
  • java的数组:既可以存储基本数据类型,也可以存储引用类型的数据。
  • java的数组:是一种数据类型,它本身是一种引用类型

10、使用数组

  • 对于一个java数组:int[] arr=new int[3];
  • java语言的数组索引是从0开始,数组长度为arr.length,因此最后一个数组元素的索引为arr.length-1
  • 访问越界的元素时,会抛出ArrayIndexOutOfBoundsException异常
  • 访问数组元素:arr[0],arr[1],arr[2];
  • 修改数组元素的值:arr[0]=1;
  • 遍历数组元素:三种循环结构均可
  • java还提供了foreach语法(for(int e:arr){…})用于遍历数组
  • 举例
public class Test {
    public static void main(String[] args){
        //初始化赋值
        int[] test1={1,2,3};
        int[] test2=new int[]{1,2,3};
        int[] test3=new int[3];
        //for循环遍历
        System.out.println("for循环遍历数组:");
        for(var i=0;i<test1.length;i++){
            System.out.print(test1[i]+" ");
        }
        System.out.println("");
        for(var j=0;j<test2.length;j++){
            System.out.print(test2[j]+" ");
        }
        System.out.println("");
        for(var k=0;k<test3.length;k++){
            System.out.print(test3[k]+" ");
        }
        System.out.println();
        System.out.println("foreach循环遍历数组:");
        for(var i:test1){
            System.out.print(i+" ");
        }
        System.out.println("");
        for(var j : test2){
            System.out.print(j+" ");
        }
        System.out.println("");
        for(var k : test3){
            System.out.print(k+" ");
        }
    }
}

11、多维数组

  • 定义方式1:Type[][] arrName=new Type[m][n];(最后一维的长度可以不写,这时必须显示初始化)
  • 定义方式2:Type[][] arrName={{a_11,…,a_1n},{a_m1,…,a_mn}};
  • 定义方式3:Type[][] arrName=new Tyype[][]={{a_11,…,a_1n},{a_m1,…,a_mn}};
  • 举例
public class Test {
    public static void main(String[] args){
        int[][] test1={{1,2},{3,4,5},{6,7,8,9}};
        int[][] test2=new int[3][4];
        int[][] test3=new int[][] {{1,2},{3,4,5},{9,7,8,9}};
        for(var i=0;i<test1.length;i++){
            for(var j=0;j<test1[i].length;j++){
                System.out.print(test1[i][j]+" ");
            }
            System.out.println();
        }
        System.out.println();
        for(var i : test2){
            for(var j : i){
                System.out.print(j+" ");
            }
            System.out.println();
        }
    }
}