Java基本语法之程序流程控制

前言

首先,我们知道完成一件事,都是有先后步骤或者完成这件事的必要条件,这些其实都是这件事程序流程和条件控制。所以,在Java程序中,我写一个程序或者一个项目或者一个方法,都会有一定顺序和条件,我们这一讲主要是java的程序流程控制。

顺序结构

  • 程序从上到下逐行地执行,中间没有任何判断和跳转。也就是流水线一样,一直写下去,这个比较好理解,对于Java没有特定的语法

分支结构

  • 根据条件,选择性地执行某段代码。
  • 有if...else和switch-case两种分支语句。

循环结构

  • 根据循环条件,重复性的执行某段代码。
  • 有while、do...while、for三种循环语句。

一、分支结构

1.1 if-else结构

if-else的结构如下,第一个判断条件用if,如果后面还有其他判断条件用else if ,最后默认的条件分支用else,if-else一旦其中一个分支满足条件就会跳出本次条件结构。

代码案例演示判断,分条件判断年龄

javascript 复制代码
public class IfElseDemo {
    public static void main(String args[]) {
        int age = 18;
        if (age < 0) {
            System.out.println("未出生!");
        } else if (age > 200) {
            System.out.println("不是人!");
        } else {
            System.out.println("年龄 " + age + "啦!");
        }
    }
}

1.2 switch-case结构

switch-case的结构如下,switch括号里面写条件,每一个case对于一种情况,要注意的是,如果case内部没有break关键字(下面会讲解)的话,会继续判断下面的case是否符合条件,这个跟if-else有区别。

注意,switch中的表达式,是有规定的,不过不符合规则编译器也不报错。有如下规则:

switch(表达式)中表达式的值必须是下述几种类型之一:

byte,short, char,int,枚举 (jdk 5.0),String (jdk 7.0)

代码案例:

javascript 复制代码
public class SwitchDemo {
    public static void main(String[] args) {
        // 表达式是整数判断
        int i = 1;
        switch (i) {
            case 0:
                System.out.println("零");
                break;
            case 1:
                System.out.println("一");
                break;                                                                                                                                                                                                                                                                                                     
            default:
                System.out.println("不知道");
                break;
        }
        // 表达式是字符串判断季节
        String season = "summer";
        switch (season) {
            case "spring":
                System.out.println("春天");
                break;
            case "summer":
                System.out.println("夏天");
                break;
            case "autumn":
                System.out.println("秋天");
                break;
            case "winter":
                System.out.println("冬天");
                break;
            default:
                System.out.println("不知道");
                break;
        }
    }
}

二、循环结构

循环结构言外之意,就是在某些条件满足的情况下,反复执行特定代码的功能。

2.1 for 循环

语法结构:

执行顺序:

1-2-3-4-2-3-4-2-3-4-....2

说明:

  • 循环条件部分:为boolean类型表达式,当值为false时,退出循环

  • 初始化部分可以声明多个变量,但必须是同一个类型,用逗号分隔

  • 可以有多个变量更新,用逗号分隔就

代码案例分析,循环计算从1 到 10的和

javascript 复制代码
public class ForDemo {

    public static void main(String args[]) {
        int result = 0;
        // 初始化i == 1, 判断 1是不是小于等于 10 ,是的话,加到result中,i继续加1,继续判断小于等于 10。。。
        for (int i = 1; i <= 10; i++) {
            result += i;
        }
        System.out.println("从1到10 " + result);
    }

}

2.2 while 循环

语法结构:

执行顺序:

1-2-3-4-2-3-4-2-3-4-....2

代码案例分析,循环计算从1 到 10的和

2.3 do-while 循环

语法结构:

执行顺序:

1-2-3-4-2-3-4-2-3-4-....2

对比while循环,do-while循环至少执行一次循环体,因为do-while是执行完循环体之后才进行条件判断的

代码案例分析,循环计算从1 到 10的和。

javascript 复制代码
public class DowhileDemo {
        public static void main(String args[]) {
            int result = 0;
            // 初始化i == 1, 判断 i是不是小于等于 10 ,是的话,加到result中,i继续加1,继续判断小于等于 10。。。
            int i = 1;
            do {
                result += i;
                i++;
            } while (i <= 10);
            System.out.println("从1到10 " + result);
        }
}

通过代码案例,可以发现上述三种循环结构是可以互相替换的。

三、特殊关键字的使用

讲完上面的三种循环结构之后,大家有没有想到一个问题,就是循环我们必须等循环条件不满足的时候才能拿终止循环,那有没有方法让循环提前终止呢?那是肯定有的,接下来,就介绍两个关于提前终止循环的关键字:breake 和 continue。

3.1 break

break语句用于终止某个语句块的执行,直接跳出循环,整个循环结束。

javascript 复制代码
 for (int j = 1; j <= 100; j++) {
            if (10 == j){
                System.out.println("找到 10 了");
                break ;
            }
            System.out.println("还在找");
        }

运行结果:找到10之后,整个循环结构就终止了。

3.2 continue

continue语句用于终止循环范围的某一次的执行,直接跳出当次循环,会接着继续下一个循环条件。

javascript 复制代码
        for (int j = 1; j <= 100; j++) {
            if (10 == j){
                System.out.println("找到 10 了");
                continue ;
            }
            System.out.println(j + "还在找");
        }

运行结果:我们可以看到,及时找到了10,循环并没有结束,j=10只是"还在找"的的语句没有了

注意:breake 和 continue只能终止最近的一个循环结构,如果嵌套多个循环结构可以指定终止那个循环体,语法结构是:continue/break 循环体名称。

如下代码,当两个循环判断i == j,就跳出外部 A 循环。

javascript 复制代码
      A:for (int i = 1; i <= 10; i++) {
            for (int j = 1; j <= i; j++) {
                if (i == j){
                    continue A;
                }
            }
        }

总结

本讲主要是java的基本语法,包括分支结构( if-else结构、switch-case结构),循环结构(for 循环,while循环)以及两个重要的关键字break和continue,相信大家对java也有一个一定的了解了,并且也能够写一些简单代码。所以给大家两个小练习,欢迎大家去写写,结果代码我会放在评论后面,大家可以先自己手写,之后在看一下答案呢。

小练习:

  1. 99乘法表
  2. 查询100以内的质数
    1. ps:质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
相关推荐
疯一样的码农2 小时前
基于Spring Boot + Vue3实现的在线商品竞拍管理系统源码+文档
java·spring boot·后端
Y编程小白3 小时前
SpringBoot的pom.xml文件中,scope标签有几种配置?
xml·spring boot·后端
健康平安的活着4 小时前
springboot整合log4j2日志框架1
spring boot·后端·log4j
是一只派大鑫4 小时前
从头开始学MyBatis—04缓存、逆向工程、分页插件
java·后端·mybatis
GoGeekBaird5 小时前
69天探索操作系统-第25天:文件系统基础
后端·操作系统
技术小泽5 小时前
代码思想之快慢路径
java·开发语言·spring boot·后端·设计规范
*长铗归来*6 小时前
ASP.NET Core Web API Hangfire
后端·c#·asp.net·.netcore
江东飞过6 小时前
.net core 的文件操作
开发语言·后端·golang
久久不觉6 小时前
.net core 的字符串处理
开发语言·后端·golang
久久不觉6 小时前
.net core 的软件开发工具
开发语言·后端·golang