在Java程序中,如果要根据条件来决定是否执行某一段代码,就需要if语句。
if语句的基本语法是:
if (条件) {
// 条件满足时执行
}
根据if的计算结果(true还是false),JVM决定是否执行if语句块(即花括号{}包含的所有语句)。
注意到if语句包含的块可以包含多条语句:
当if语句块只有一行语句时,可以省略花括号{}:但是,省略花括号并不总是一个好主意。假设某个时候,突然想给if语句块增加一条语句时:
由于使用缩进格式,很容易把两行语句都看成if语句的执行块,但实际上只有第一行语句是if的执行块。在使用git这些版本控制系统自动合并时更容易出问题,所以不推荐忽略花括号的写法。
else
if语句还可以编写一个else { … },当条件判断为false时,将执行else的语句块:
浮点数在计算机中常常无法精确表示,并且计算可能出现误差,因此,判断浮点数相等用==判断不靠谱:
正确的方法是利用差值小于某个临界值来判断:
判断引用类型相等
在Java中,判断值类型的变量是否相等,可以使用==运算符。但是,判断引用类型的变量是否相等,表示“引用是否相等”,或者说,是否指向同一个对象。例如,下面的两个String类型,它们的内容是相同的,但是,分别指向不同的对象,用判断,结果为false:
要判断引用类型的变量内容是否相等,必须使用equals()方法:
注意:执行语句s1.equals(s2)时,如果变量s1为null,会报NullPointerException:
要避免NullPointerException错误,可以利用短路运算符&&:
public class Main {
public static void main(String[] args) {
String s1 = null;
if (s1 != null && s1.equals(“hello”)) {
System.out.println(“hello”);
}
}
}
还可以把一定不是null的对象"hello"放到前面:例如:if (“hello”.equals(s)) { … }。