【javaSE】7.程序逻辑控制

1.顺序结构

顺序结构比较简单,是按照代码书写的顺序一行一行执行

public class TestDemo {
    public static void main(String[] args) {
        System.out.println("aaa");
        System.out.println("bbb");
        System.out.println("ccc");
    }
}

// 运行结果
aaa
bbb
ccc

如果调整代码的书写顺序,则执行顺序也会发生变化

public class TestDemo {
    public static void main(String[] args) {
        System.out.println("bbb");
        System.out.println("aaa");
        System.out.println("ccc");
    }
}

// 运行结果
bbb
aaa
ccc

2.分支结构

2.1 if 语句

基本语法1:

if(布尔表达式){
	//条件满足时执行代码
}

基本语法2:

if(布尔表达式){
	//条件满足时执行的代码
}else{
	//条件不满足时执行的代码
}

基本语法3:多分支的情况

if(布尔表达式){
    //条件满足时执行代码
}else if(布尔表达式){
    //条件满足时执行代码
}else{
    //条件都不满足时执行代码
}
注意:
  1. 悬垂 else 问题
public class TestDemo {
    public static void main(String[] args) {
        int x = 20;
        int y = 10;
        if (x == 10)
            if (y == 10)
                System.out.println("aaa");
        else //未加大括号,else直接和最近的if匹配在一起
            System.out.println("bbb");

    }
}
// 运行结果
无任何输出

if / else 语句中可以不加 大括号 . 但是也可以写语句(只能写一条语句). 此时 else 是和最接近的 if 匹配.

但是实际开发中我们 不建议 这么写. 最好加上大括号

2.分号问题

public class TestDemo {
    public static void main(String[] args) {
        int x = 20;
        if (x == 10);{
            System.out.println("hehe");
        }
    }
}
// 运行结果
hehe

if语句多写了一个分号,导致分号成为了 if 语句的语句体,而 {} 中的代码已经成为了和 if 无关的代码块

2.2switch语句

基本语法:

switch(整数|枚举|字符|字符串){
    case 常量值1:{
        语句1;
        [break;]
        }
    case 常量值2:{
        语句2;
        [break;]
        }
    ...
    default:{
        内容都不满足时执行语句;
        [break;]
        }       
 }

示例1:
public class TestDemo {
    public static void main(String[] args) {
        int a = 10;
        switch (a){
            case 1:
                System.out.println("1");
                break; 
            case 2:
                System.out.println("2");
                break;    
            default:
                System.out.println("输入有误");
                
        }
    }
}
注意:

1.break:每个case后面都不要去省略

int day = 1;
switch(day) {
    case 1:
        System.out.println("星期一");
        // break;
    case 2:
        System.out.println("星期二");
        break;
}
// 运行结果
星期一
星期二

2.和 if 的区别:switch中不能写一个复杂的表达式,例如 a>10,

image-20240122220501742

3.面试问题:不能做switch的参数的数据类型有什么?

switch 中的值只能是 整数|枚举|字符|字符串

long、float、double、boolean 都不可以作为switch的参数,除了这些基本数据类型,后续说到的枚举,String也可以作为Switch的参数。

image-20240122220655440

image-20240122220740593

image-20240122220803112

image-20240122220905316

4.根据 switch 中值的不同, 会执行对应的 case 语句. 遇到 break 就会结束该 case 语句.
如果 switch 中的值没有匹配的 case, 就会执行 default 中的语句.
我们建议一个 switch 语句最好都要带上 default

  1. switch 虽然支持嵌套, 但是很丑,一般不建议嵌套

    public class Test {
        public static void main(String[] args) {
            int x = 1;
            int y = 1;
            switch(x) {
                case 1:
                    switch(y) {
                        case 1:
                            System.out.println("hehe");
                            break;
                    }
                    break;
                case 2:
                    System.out.println("haha");
                    break;
            }
        }
    }
    
    

3.循环结构

3.1while循环

基本语法结构

while(循环条件){ 
	循环语句; 
}

循环条件为 true, 则执行循环语句; 否则结束循环

示例1:打印1-10的数字
public class TestDemo {
    public static void main(String[] args) {
        int num = 1;
        while (num <= 10) {
            System.out.println(num);
            num++;
        }
    }
}
注意:
  1. 和 if 类似, while 下面的语句可以不写 { } , 但是不写的时候只能支持一条语句. 建议还是加上 { }
  2. while后面不要多写分号,否则会导致循环不能正确执行
public class TestDemo {
    public static void main(String[] args) {
        int num = 1;
        while(num <= 10);{
            System.out.println(num);
            num++;
        }
    }
}
//执行结果
//无任何输出,程序死循环

此时while();为一个完整的while结构,实际上是一个空语句,实际的{}部分和循环无关,此时循环条件恒成立,导致代码死循环

3.2 break

break 的功能是让循环提前结束

示例1:找到 100-200 中第一个 3 的倍数
public class TestDemo {
    public static void main(String[] args) {
        int num = 100;
        while (num <= 200) {
            if (num % 3 == 0) {
                System.out.println("找到了 3 的倍数, 为:" + num);
                break;
            }
            num++;
        }
    }
}

//执行结果
找到了 3 的倍数,为:102

执行到 break 就会让循环结束

3.3 continue

continue 的功能是跳过这次循环,立即进入下次循环

示例1:找到100-200中所有3的倍数

public class TestDemo {
    public static void main(String[] args) {
        int num = 100;
        while (num <= 200) {
            if (num%3 != 0){
                num++;  // 这里的 ++ 不要忘记! 否则会死循环.
                continue;
            }
            System.out.println(num);
            num++;
        }
    }
}

执行到 continue 语句的时候, 就会立刻进入下次循环(判定循环条件), 从而不会执行到下方的打印语句

3.4 for循环

基本语法:

for(表达式1;表达式2;表达式3){
    循环体;
}
  • 表达式1:用于初始化循环变量
  • 表达式2:循环条件
  • 表达式3:更新循环变量

先执行表达式1初始化循环变量,接下来就是执行表达式2的判断部分,表达式2的结果如果为false,则循环结束;如果表达式2的结果为true,则执行循环语句,循环语句执行完后,再去执行表达式3,调整循环变量,然后再去表达式2的地方执行判断,表达式2的结果是否为false,决定循环是否继续。
整个循环的过程中,表达式1初始化部分只被执行1次,剩下的就是表达式2、循环语句、表达式3在循环

示例1:打印1-10的数字
public class TestDemo {
    public static void main(String[] args) {
        for (int i = 1; i <= 10; i++){
            System.out.println(i);
        }
    }
}
注意:
  1. 和 if 类似, for 下面的语句可以不写 { } , 但是不写的时候只能支持一条语句. 建议还是加上 { }

  2. 和 if 类似, for 后面的 { 建议和 while 写在同一行.

  3. 和 if 类似, for 后面不要多写 分号, 否则可能导致循环不能正确执行

  • 19
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值