Java 条件表达式基础

JavaJavaBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

在本实验中,我们学习了 Java 的基本数据类型和运算符。在本实验中,我们将开始学习编写面向过程的程序。主要内容是使用控制结构的范式:条件表达式。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("`Java`")) -.-> java/BasicSyntaxGroup(["`Basic Syntax`"]) java/BasicSyntaxGroup -.-> java/operators("`Operators`") java/BasicSyntaxGroup -.-> java/if_else("`If...Else`") java/BasicSyntaxGroup -.-> java/switch("`Switch`") subgraph Lab Skills java/operators -.-> lab-178545{{"`Java 条件表达式基础`"}} java/if_else -.-> lab-178545{{"`Java 条件表达式基础`"}} java/switch -.-> lab-178545{{"`Java 条件表达式基础`"}} end

条件表达式

为了编写有用的程序,我们几乎总是需要检查条件并根据条件改变程序的行为。条件语句为我们提供了这种能力。

If-Else 条件表达式

最简单的形式是 if-else 语句:

示例:

/home/labex/project/ifelseTest.java 文件中编写以下代码:

public class ifelseTest{
    public static void main(String[] args){
        int x = 1;
        if (x > 0) {
            System.out.println("x is positive");
        }
        else{
            System.out.println("x is non-positive");
        }
    }
}

输出:

在终端中使用以下命令运行 ifelseTest.java 文件:

javac /home/labex/project/ifelseTest.java
java ifelseTest

查看输出:

x is positive

括号中的表达式称为条件。如果条件为真,则执行 if 后面大括号中的语句。如果条件不为真,则执行 else 后面大括号中的语句。如果没有 elseif 条件为假,则执行 if-else 后面的语句(如果有)。条件可以包含任何比较运算符,也称为关系运算符

示例:

if (x == y){ }               // x 等于 y
if (x != y){ }               // x 不等于 y
if (x > y) { }               // x 大于 y
if (x < y) { }               // x 小于 y
if (x >= y){ }               // x 大于或等于 y
if (x <= y){ }               // x 小于或等于 y

尽管这些操作你可能已经很熟悉,但 Java 使用的语法与数学符号(如 =、≠ 和 ≤)略有不同。一个常见的错误是使用单等号(=)而不是双等号(==)。请记住,= 是赋值运算符,而 == 是比较运算符。此外,没有 =<=> 这样的符号。

条件运算符的两边必须是相同类型。你只能将 int 与 int 比较,double 与 double 比较。==!= 运算符可以用于 String,但它们的行为可能与你预期的不一致。而且,其他关系运算符根本不能用于字符串。

例如:如果 x 除以 2 的余数为 0,那么我们知道 x 是偶数,这段代码会打印相应的消息。如果条件为假,则执行第二个打印语句。由于条件必须为真或假,因此只会执行其中一个分支。如果你认为你可能需要经常检查数字的奇偶性,你可能希望将这段代码“封装”到一个方法中,如下所示:

示例:

/home/labex/project/conditionTest.java 文件中编写以下代码:

public class conditionTest
{
    public static void printParity(int x) {
        if (x%2 == 0) {
            System.out.println(x + " is even");
        } else {
              System.out.println(x + " is odd");
        }
    }
    public static void main(String[] args){
        printParity(17);
        printParity(18);
    }
}

输出:

在终端中使用以下命令运行 conditionTest.java 文件:

javac /home/labex/project/conditionTest.java
java conditionTest

查看输出:

17 is odd
18 is even

现在你有了一个名为 printParity 的方法,它可以为你提供的任何整数打印适当的消息。在 main 中,你可以调用这个方法。请记住,当你调用一个方法时,你不需要声明你提供的参数的类型。Java 可以推断出它们的类型。你应该抵制编写类似 printParity(int 3) 的诱惑。此外,你还可以将一个条件嵌套在另一个条件中。

示例:

/home/labex/project/nestedConditionTest.java 文件中编写以下代码:

public class nestedConditionTest{
    public static void main(String[] args){
        int x = 0;  // 你可以尝试 x = 1, x = -1
        if (x == 0) {
            System.out.println("x is zero");
        }
        else {
            if (x > 0) {
                System.out.println("x is positive");
            }
            else {
                System.out.println("x is negative");
            }
        }
    }
}

输出:

在终端中使用以下命令运行 nestedConditionTest.java 文件:

javac /home/labex/project/nestedConditionTest.java
java nestedConditionTest

查看输出:

x is zero

现在有一个外部条件,它包含两个分支。第一个分支包含一个简单的打印语句,但第二个分支包含另一个条件语句,它也有自己的两个分支。这两个分支都是打印语句,但它们也可以是条件语句。

缩进有助于使结构美观且易于理解,但嵌套条件语句很快就会变得难以阅读。尽量避免使用它们。另一方面,这种嵌套结构很常见,我们还会再次看到它。所以,你最好习惯它。

Switch-Case 条件表达式

Switch-case 语句是另一种条件表达式。Switch-case 语句的语法如下:

示例:

// value 类型可以是 byte、short、int、char、String,但不能是 long 类型。
switch (变量或值表达式)
{
    // case 值必须是常量值
    case value1:
    // 代码
    ;
    case value2:
    // 代码
    ;
    default:
    // 代码
    ;
}

示例:

/home/labex/project/switchTest.java 文件中编写以下代码:

public class switchTest
{
    public static void main(String[] args){
    // 你可以将 i 改为 2,然后再次尝试
    int i = 2;
    switch(i)
    {
        case 1:
            System.out.println(1);
            break;
        case 2:
            System.out.println(2);
            // 如果没有 break 语句,有时你会得到一个令人困惑的结果。
            // 你可以尝试删除 break 语句,看看会发生什么。
            break;
        // 如果以上都不匹配,则执行 default 语句
        default:
            System.out.println("default");
            break;
        }
    }
}

输出:

在终端中使用以下命令运行 switchTest.java 文件:

javac /home/labex/project/switchTest.java
java switchTest

查看输出:

2

总结

在本实验中,我们学习了条件表达式以及两种条件语句的写法。它们对编程非常有用。在下一个实验中,我们将学习另一种控制结构:递归和循环。

您可能感兴趣的其他 Java 教程