三元操作符if-else
三元操作符也稱爲條件操作符,它顯得比較特別,因爲它有三個操作數;
但它卻是屬於操作符的一種,因爲它最終也會生成一個值,這與本章下一節中介紹的普通的if-else語句是不同的。
其表達式採取下述形式:
boolean-exp ?value0:value1
如果boolean-exa(布爾表達式)的結果爲true,就計算value0,而且這個計算結果也就是操作符最終產生的值。
如果Boolean-exp的結果爲false,就計算value1,同樣,它的結果也就成爲了操作符最終產生的值。
當然,也可以換用普通的if-else語句(在後面介紹),但三元操作符更加簡潔。
儘管C(C中發明了該操作符)引以爲傲的就是它是一種簡練的語言,而且三元操作符的引入多半就是爲了體現這種高效率的編程,
但假如你打算頻繁使用它,還是要多作思量,因爲它很容易產生可讀性極差的代碼。
條件操作符與if-else完全不同,因爲它會產生一個值,下面是這兩者進行比較的實例:
//: operators/TernaryIfElse.java
import static net.mindview.util.Print.*;
public class TernaryIfElse {
static int ternary(int i) {
return i < 10 ? i * 100 : i * 10;
}
static int standardIfElse(int i) {
if(i < 10)
return i * 100;
else
return i * 10;
}
public static void main(String[] args) {
print(ternary(9));
print(ternary(10));
print(standardIfElse(9));
print(standardIfElse(10));
}
} /* Output:
900
100
900
100
*///:~
可以看出,上面的ternary()中的代碼與standardIfElse()中不用三元操作符的代碼相比,顯得更加緊湊;
但standardIfElse()更易理解,而且不需要太多的錄入。
所以在選擇使用三元操作符時,請務必仔細考慮。