← Backend / Java

05_Java 条件语句

Java if-else 条件语句的用法和示例

Java 中的条件语句允许程序根据条件的不同执行不同的代码块。

一个 if 语句包含一个布尔表达式和一条或多条语句。

语法

if 语句的语法如下:

if(布尔表达式) {
   //如果布尔表达式为true将执行的语句
}

如果布尔表达式的值为 true,则执行 if 语句中的代码块,否则执行 else 语句块后面的代码。

Test.java 文件代码:

public class Test {
   public static void main(String args[]){
      int x = 10;
      if( x < 20 ){
         System.out.print("这是 if 语句");
      }
   }
}

以上代码编译运行结果如下:

这是 if 语句

if...else 语句

if 语句后面可以跟 else 语句,当 if 语句的布尔表达式值为 false 时,else 语句块会被执行。

语法

if…else 的用法如下:

if(布尔表达式){
   //如果布尔表达式的值为true
}else{
   //如果布尔表达式的值为false
}

实例

Test.java 文件代码:

public class Test {
   public static void main(String args[]){
      int x = 30;
      if( x < 20 ){
         System.out.print("这是 if 语句");
      }else{
         System.out.print("这是 else 语句");
      }
   }
}

以上代码编译运行结果如下:

这是 else 语句

if...else if...else 语句

if 语句后面可以跟 else if…else 语句,这种语句可以检测到多种可能的情况。

使用 if,else if,else 语句的时候,需要注意下面几点:

  • if 语句至多有 1 个 else 语句,else 语句在所有的 else if 语句之后。
  • if 语句可以有若干个 else if 语句,它们必须在 else 语句之前。
  • 一旦其中一个 else if 语句检测为 true,其他的 else if 以及 else 语句都将跳过执行。

语法

if...else 语法格式如下:

if(布尔表达式 1){
   //如果布尔表达式 1的值为true执行代码
}else if(布尔表达式 2){
   //如果布尔表达式 2的值为true执行代码
}else if(布尔表达式 3){
   //如果布尔表达式 3的值为true执行代码
}else {
   //如果以上布尔表达式都不为true执行代码
}

实例

Test.java 文件代码:

public class Test {
   public static void main(String args[]){
      int x = 30;
      if( x == 10 ){
         System.out.print("Value of X is 10");
      }else if( x == 20 ){
         System.out.print("Value of X is 20");
      }else if( x == 30 ){
         System.out.print("Value of X is 30");
      }else{
         System.out.print("这是 else 语句");
      }
   }
}

以上代码编译运行结果如下:

Value of X is 30

嵌套的 if…else 语句

使用嵌套的 if…else 语句是合法的。也就是说你可以在另一个 if 或者 else if 语句中使用 if 或者 else if 语句。

语法

嵌套的 if…else 语法格式如下:

if(布尔表达式 1){
   //如果布尔表达式 1的值为true执行代码
   if(布尔表达式 2){
      //如果布尔表达式 2的值为true执行代码
   }
}

你可以像 if 语句一样嵌套 else if...else。

实例

Test.java 文件代码:

public class Test {
   public static void main(String args[]){
      int x = 30;
      int y = 10;
      if( x == 30 ){
         if( y == 10 ){
            System.out.print("X = 30 and Y = 10");
         }
      }
   }
}

以上代码编译运行结果如下:

X = 30 and Y = 10

Pattern Matching(instanceof 模式匹配,Java 16+)

传统写法中,instanceof 检查后还需要显式强制转换;Java 16 开始可以在检查的同时绑定变量:

Object obj = "Hello, Java!";

// 传统写法
if (obj instanceof String) {
    String s = (String) obj;   // 需要手动强转
    System.out.println(s.toUpperCase());
}

// 模式匹配写法(Java 16+)
if (obj instanceof String s) {   // 检查 + 声明变量 s,一步完成
    System.out.println(s.toUpperCase());   // s 在 if 块内直接可用
}

变量的作用域由编译器自动推断:

static void process(Object obj) {
    if (obj instanceof Integer i && i > 0) {
        // i 只在此块内有效,且已确保 > 0
        System.out.println("正整数:" + i);
    } else if (obj instanceof String s && !s.isEmpty()) {
        System.out.println("非空字符串:" + s);
    } else {
        System.out.println("其他:" + obj);
    }
}

process(42);       // 正整数:42
process("Java");   // 非空字符串:Java
process(3.14);     // 其他:3.14

条件语句速查

语法 适用场景
if 单一条件判断
if...else 二选一
if...else if...else 多条件链式判断
嵌套 if 条件嵌套,注意层次不要过深
switch 对同一变量的多个值匹配(见 switch case 章节)
instanceof 模式匹配 Java 16+,类型检查 + 变量绑定一步到位