Java的分支结构 - if

if 语句

上面讲到的程序,都是顺序程序,程序中所有语句都是按照语句的先后次序,顺序执行。但是,如果根据情况来决定是否执行某一段代码时,就需要用到分支语句 if 语句。

if 语句的基本语法是:

if (条件) {
    // 条件满足时执行的语句
}

if 语句根据条件的计算结果(true还是false),决定是否执行 if 语句块(花括号 { } 包含的所有语句)。

让我们来看一个例子:

 public class Main {
     public static void main(String[] args) {
         int n = 70;
         if (n >= 60) {
             System.out.println("合格");
         }
         System.out.println("END");
     }
 }

当条件 n >= 60 计算结果为 true 时, if 语句块被执行,将打印 “合格”,否则, if 语句块将被跳过。修改 n 的值可以看到不同的执行结果。

注意, if 语句可以包含多条语句:

 public class Main {
     public static void main(String[] args) {
         int n = 70;
         if (n >= 60) {
             System.out.println("合格");
             System.out.println("恭喜通过测试");
         }
         System.out.println("END");
     }
 }

if 语句块只有一行语句时,也可以省略花括号 { }

public class Main {
    public static void main(String[] args) {
        int n = 70;
        if (n >= 60)
            System.out.println("恭喜通过测试");
        System.out.println("END");
    }
}

但是,省略花括号并不总是一个好主意。假设某个时候,突然想给 if 语句块增加一条语句时,如果忘记增加花括号,就会导致执行出现问题。

else语句

if 语句还可以编写一个 else { … }部分,表示当条件判断为 false 时,将执行语句块:

 public class Main {
     public static void main(String[] args) {
         int n = 70;
         if (n >= 60) {
             System.out.println("合格");
         } else {
             System.out.println("不合格");
         }
         System.out.println("END");
     }
 }

修改上述代码 n 的值,观察 if 条件为 truefalse 时,程序执行的语句块。

注意,else 不是必须的。

else if语句

ifelse 这种结构,只适合于 “二选一” 的模式,及只有两种结果的情况。但实际情况并不是只有这样的,“三选一”、“四选一” 的模式改如何解决呢,这就需要用到 else if 这种结构了。

例如,在进行成绩判断时,分为“优”、“良”、“中”、“差” :

 public class Main {
     public static void main(String[] args) {
         int n = 70;
         if (n >= 90) {
             System.out.println("优");
         } else if (n >= 75) {
             System.out.println("良");
         } else if (n >= 60) {
             System.out.println("中");
         } else {
             System.out.println("差");
         }
     }
 }

在串联使用多个 if 时,要特别注意判断顺序。观察下面的代码:

 public class Main {
     public static void main(String[] args) {
         int n = 100;
         if (n >= 60) {
             System.out.println("中");
         } else if (n >= 90) {
             System.out.println("优");
         } else if (n >= 75) {
             System.out.println("良");
         } else {
             System.out.println("差");
         }
     }
 }

执行发现,n = 100 时,满足条件 n >= 90,但输出的不是 ,而是 ,原因是 if 语句从上到下执行时,先判断 n >= 60 成功后,后续 else 不再执行,因此,if (n >= 90) 没有机会执行了。

因此,正确的方式是按照判断范围 从大到小 依次判断,或者按照 从小到大 的顺序依次判断。

判断引用类型相等

在Java中,判断值类型的变量是否相等,可以使用 == 运算符。但是,判断引用类型的变量是否相等,== 表示 “引用是否相等”,或者说,是否指向同一个对象。例如,下面的两个String类型,它们的内容是相同的,但是,分别指向不同的对象,用 == 判断,结果为 false

 public class Main {
     public static void main(String[] args) {
         String s1 = "hello";
         String s2 = "HELLO".toLowerCase();
         System.out.println(s1);
         System.out.println(s2);
         if (s1 == s2) {
             System.out.println("s1 == s2");
         } else {
             System.out.println("s1 != s2");
         }
     }
 }

要判断引用类型的变量内容是否相等,必须使用 equals() 方法:

 public class Main {
     public static void main(String[] args) {
         String s1 = "hello";
         String s2 = "HELLO".toLowerCase();
         System.out.println(s1);
         System.out.println(s2);
         if (s1.equals(s2)) {
             System.out.println("s1 equals s2");
         } else {
             System.out.println("s1 not equals s2");
         }
     }
 }

小结

  • if ... else 可以做条件判断,else 是可选的;
  • 不推荐省略花括号 {}
  • 多个 if ... else 串联要特别注意判断顺序;
  • 要注意浮点数判断相等不能直接用 == 运算符;
  • 引用类型判断内容相等要使用 equals()
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值