Java基础复习之选择结构使用思路

Java基础复习之选择结构使用思路


目录


一、Java提供的三种选择结构

  1. ifif ... elseif ... else if ... else
  2. 三元运算符
  3. switch ... caseswitch ... case ... default

二、三种选择结构的使用结构

如下condition是指所有返回值为boolean(布尔型)的语句均可;

(一)关于if ... else的三种使用结构

if (condition) {
  // 条件为true时执行的代码块
}
if (condition) {
  // 条件为true时执行的代码块
} else {
  // 条件为false时要执行的代码块
}
if (condition1) {
  // 条件1为true,则要执行的代码块,不管后续条件是否为true,后续代码不在执行。
} else if (condition2) {
  // 条件1为false,条件2为true,则要执行的代码块,不管后续条件是否为true,后续代码不在执行。
} else if (condition3) {
  // 条件1、2为false,条件3为true,则要执行的代码块,不管后续条件是否为true,后续代码不在执行。
  // ...
} else {
  // 上述条件均为false时要执行的代码块,不需要else也可以直接去掉,允许没有else的结构。
}

(二)三元运算符

三元运算符使用的主要目的是简化if ... else结构。

variable = (condition) ? expressionTrue :  expressionFalse;

// 上下两者是等价的。

if (condition) {
  // expressionTrue
} else {
  // expressionFalse
}

举例:

int z = 10;
boolean a = z < 30 ? true : false;
System.out.println(a);

打印结果为true

知识点:三元运算符可以多层嵌套。

variable = (condition) ?  (condition) ? expressionTrue :  expressionFalse :  expressionFalse;
int z = 10;
boolean b = z < 5 ? true : (z < 30 ? true : false);
System.out.println(b);

打印结果为true(思考一下为什么?)

知识点:三元运算符有返回结果,且expressionTrueexpressionFalse的返回结果类型要相同。错误举例如下:

image-20240122112819730

知识点:三元运算符有返回结果,且一定要被接收或用到。

image-20240122113226284

知识点:三元运算符的expressionTrueexpressionFalse仅只能是一行代码,且两者该行代码的返回值要相同。

image-20240122113601415

三元运算符缺点:

使用三元运算符代码的可读性有所降低,三元运算符相比if ... else结构使用局限性较大。

(三)关于switch ... case的两种使用结构

使用switch + break语句从多个要执行的代码块中选择一个执行。

switch(expression) {
  case x:
    // 待执行代码块
    break;
  case y:
    // 待执行代码块
    break;
  case z:
    // 待执行代码块
    break;
}
switch(expression) {
  case x:
    // 待执行代码块
    break;
  case y:
    // 待执行代码块
    break;
  default:
    // 待执行代码块
}

工作原理:

  • switch 表达式计算一次
  • case 将表达式的值与每种情况的值进行比较
  • 如果存在匹配项,则执行关联的代码块
  • breakdefault 关键字是可选的

img

举例:

int day = 4;
switch (day) {
  case 1:
    System.out.println("Monday");
    break;
  case 2:
    System.out.println("Tuesday");
    break;
  case 3:
    System.out.println("Wednesday");
    break;
  case 4:
    System.out.println("Thursday");
    break;
  case 5:
    System.out.println("Friday");
    break;
  case 6:
    System.out.println("Saturday");
    break;
  case 7:
    System.out.println("Sunday");
    break;
}
// 输出 "Thursday" (day 4)

注意:不写break,会存在case穿透问题。

default 关键字指定在没有大小写匹配时默认要运行的一些代码:

int day = 4;
switch (day) {
  case 6:
    System.out.println("Today is Saturday");
    break;
  case 7:
    System.out.println("Today is Sunday");
    break;
  default:
    System.out.println("Looking forward to the Weekend");
}
// 输出 "Looking forward to the Weekend"

三、选择结构使用思路

理论上if-else选择结构和switch选择结构是可以等价转换的,但是其各自都有各自更易的使用场景。

当带判断条件是某一个连续的值范围时,例如:2 <= x <= 5内的值,常常选择if-else选择结构。

当带判断条件是某一个间断已知的值范围时,例如:2,3,4,5内的确定值,常常选择switch选择结构。

posted @ 2024-01-22 13:55  zhao-XH  阅读(7)  评论(0编辑  收藏  举报