内容纲要

顺序结构

public class Test {

    public static void main(String[] args) {

        System.out.println("步骤一");
        System.out.println("步骤二");
        System.out.println("步骤三");
    }

}

顺序结构是程序最常用的,基本的组成部分。

语句一条一条按顺序执行,流程图如下:

顺序结构

选择结构

进行判断,进入指定的分支进行执行

选择结构

if语句

  1. if(表达式){语句体}:先判断表达式,如果为真,则执行里的语句体,如果为假,不执行。
public class Test {

    public static void main(String[] args) {

        int score = 70;
        if(score >= 60) {
            System.out.println("成绩及格了");
        }
        System.out.println("结束");
    }

}
  1. if(表达式){语句体一} else{语句体二}:先判断表达式,如果为真,则执行里的语句体一,如果为假,则执行else{语句体二}
public class Test {

    public static void main(String[] args) {

        int score = 70;
        if(score >= 60) {
            System.out.println("成绩及格了");
        }else{
            System.out.println("成绩不及格");
        }
        System.out.println("结束");
    }

}
  1. 嵌套使用if(表达式一){语句体一} else if(表达式二){语句体二}else{}:先判断表达式一,如果为真,则执行里的语句体一,如果为假,则继续判断表达式二,如果为真,执行else{语句体二},依次循环。
public class Test {

    public static void main(String[] args) {

        int score = 70;
        if(score >= 90) {
            System.out.println("成绩优秀");
        }else if(score >= 70){
            System.out.println("成绩良好");
        }else if(score >= 60) {
            System.out.println("成绩合格");
        }else {
            System.out.println("成绩不及格");
        }
        System.out.println("结束");
    }

}

若只有一条语句体时,也可以像C语言一样不写,但是建议写。

switch语句

switch语句根据表达式的结果执行case结果,然后继续执行后续语句,若没有break则执行下一个case,直到遇到break结束执行。switch(表达式)里的表达式必须是整型、字符或字符串、枚举类型。

public class Test {

    public static void main(String[] args) {

        int score = 70;
        switch(score / 10) {
        case 10:
        case 9:
            System.out.println("成绩优秀");
            break;
        case 8:
        case 7:
            System.out.println("成绩良好");
            break;
        case 6:
            System.out.println("成绩合格");
            break;
        default:
            System.out.println("成绩不及格");
            break;
        }
        System.out.println("结束");
    }

}

新特性

JDK12开始,switch语句更新了更简洁的表达式语法,不再需要break来结束。在->之后如果有多条语句,需要用括起来。并且多个case之间用,来连接。

public class Test {

    public static void main(String[] args) {

        int score = 70;
        switch(score / 10) {
        case 10 -> {
            System.out.println("成绩很优秀");
            System.out.println("获奖了!");
        }
        case 9 -> System.out.println("成绩优秀");
        case 8,7 -> System.out.println("成绩良好");
        case 6 -> System.out.println("成绩合格");
        default -> System.out.println("成绩不及格");
        }
        System.out.println("结束");
    }

}

switch还可以由于直接赋值,但是在switch(表达式){}之后必须用;

public class Test {

    public static void main(String[] args) {

        int score = 70;
        String result = switch(score / 10) {
        case 10 -> "成绩很优秀";
        case 9 -> "成绩优秀";
        case 8,7 -> "成绩良好";
        case 6 -> "成绩合格";
        default -> "成绩不及格";
        };
        System.out.println(result);
        System.out.println("结束");
    }

}

并且在多条语句的时候,使用yield关键字返回值。

public class Test {

    public static void main(String[] args) {

        int score = 100;
        String result = switch(score / 10) {
        case 10 -> {
            String no = "获奖了,整数编号:15234535";
            yield no;
        }
        case 9 -> "成绩优秀";
        case 8,7 -> "成绩良好";
        case 6 -> "成绩合格";
        default -> "成绩不及格";
        };
        System.out.println(result);
        System.out.println("结束");
    }

}

循环结构

在满足判断表达式的情况下反复执行循环体,需要控制条件出口,否则会发生循环等待,也就是死循环。数据类型有最大值,达到最大值后,再加1会变成负数

循环结构

while语句

while循环先判断循环条件是否满足,再执行循环体,有可能一次都不执行。

public class Test {

    public static void main(String[] args) {

        int i = 10;
        int sum = 0;
        while(i > 0) {
            sum += i;
            i--;
        }
        System.out.println(sum);
    }

}

do while语句

do while循环先执行循环体,再判断条件,不管满不满足判断条件都会执行一次。

public class Test {

    public static void main(String[] args) {

        int i = 10;
        int sum = 0;
        do {
            sum += i;
            i--;
        }while(i > 0);
        System.out.println(sum);
    }

}

for语句

可以使用for(初始条件;条件判断;控制条件){语句体},可以灵活使用for()表达式。

public class Test {

    public static void main(String[] args) {

        int sum = 0;
        for(int i = 10;i > 0;i--) {
            sum += i;
        }

//      int i = 10;
//      for(;i > 0;) {
//          sum += i;
//          i--;
//      }
        System.out.println(sum);
    }

}

增强for(for each)

在引用数据类型中,可以使用增强for(数据类型 变量名:遍历对象){}来遍历数据,如第一个程序HelloWorld

public class HelloWorld{

    public static void main(String[] args){

        for(String arg : args){
            if("-say".equals(arg)){
                System.out.println("Hello World!");
            }
        }

    }

}

跳出

在循环语句或者switch中使用breakcontinue来跳过循环或终止分支。

break

前面可以看到break可以直接终止switch,同时也看终止循环。如果是双层循环,只会终止内层循环。

public class Test {

    public static void main(String[] args) {

        int sum = 0;
        for(int i = 10;i > 0;i--) {
            if(i == 5) {
                break;
            }
            sum += i;
        }
        System.out.println(sum);//40
    }

}

continue

continuebreak不同,是因为continue只会跳过当前循环,继续进行下一次循环,而break是彻底终止循环。

public class Test {

    public static void main(String[] args) {

        int sum = 0;
        for(int i = 10;i > 0;i--) {
            if(i == 5) {
                continue;
            }
            sum += i;
        }
        System.out.println(sum);
        //50
    }

}
最后修改日期:2020年8月2日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。