JavaRush /Java Blog /Random-TW /Java中的三元運算符

Java中的三元運算符

在 Random-TW 群組發布
你好!今天的講座不會很長,但絕對有用:) 我們將討論所謂的三元運算子三元運算子 - 1「三元」的意思是「三重」。if-else這是您已經熟悉的條件運算子的替代方案。讓我們舉個例子。假設一個人決定去電影院看一部等級為 18+ 的電影。門衛在入口處檢查他的年齡:如果符合年齡限制,就允許他進入大廳;如果不符合年齡限制,就送他回家。讓我們創建一個類別Man並使用以下命令檢查它if-else
public class Man {

   private int age;

   public Man(int age) {
       this.age = age;
   }

   public int getAge() {
       return age;
   }

   public void setAge(int age) {
       this.age = age;
   }

   public static void main(String[] args) {

       Man man = new Man(22);

       String securityAnswer;

       if (man.getAge() >= 18) {
           securityAnswer = "It's all right, come in!";
       } else {
           securityAnswer = "This movie is not suitable for your age!";
       }

       System.out.println(securityAnswer);

   }
}
控制台輸出:

"Все в порядке, проходите!"
如果我們刪除控制台的輸出,我們的測試將如下所示:
if (man.getAge() >= 18) {
           securityAnswer = "It's all right, come in!";
       } else {
           securityAnswer = "This movie is not suitable for your age!";
       }
事實上,這裡的邏輯很簡單:檢查一個條件(年齡 >= 18)。根據這一點,securityAnswer具有警衛回應的兩個字串之一被指派給該變數。這種「一個條件 - 兩個可能的結果」的情況在程式設計中經常出現。因此,為它們創建了相同的三元運算子。有了它,我們可以將驗證簡化為一行程式碼:
public static void main(String[] args) {

   Man man = new Man(22);

   String securityAnswer = (man.getAge() >= 18) ? "It's all right, come in!" : "This movie is not suitable for your age!";

   System.out.println(securityAnswer);

}
這就是這位操作員的工作樣子。它被稱為三元(三重),因為 3 個組件參與其工作:
  • 一個條件 (man.getAge() >= 18
  • 兩種可能的結果(“沒關係,繼續吧!”“這部電影不適合你的年齡!”
首先,在程式碼中寫入一個條件,然後是一個問號。
man.getAge() >= 18 ?
“此人的年齡是否大於或等於18歲?” 以下是第一個結果。如果條件返回true,即為真,則觸發:
String securityAnswer = man.getAge() >= 18 ? "It's all right, come in!"
此人的年齡是否大於或等於 18 歲?如果是,則為該變數分配 securityAnswer “一切都很好,請進來!” 接下來是「:」運算符,其後寫入第二個結果。如果條件返回false,即為 false,則觸發:
String securityAnswer = man.getAge() >= 18 ? "It's all right, come in!" : "This movie is not suitable for your age!";
此人的年齡是否大於或等於 18 歲?如果是,則為該變數分配 securityAnswer “一切都很好,請進來!” 。如果不是,則為變數分配 securityAnswer “這部電影不適合你的年齡!” 這就是三元運算子的一般邏輯。健康)狀況 ?結果 1: 結果 2 三元運算子 - 2順便說一下,沒有必要在條件兩邊加上括號:我們這樣做是為了提高可讀性。沒有它們它也能工作:
public static void main(String[] args) {

   Man man = new Man(22);

   String securityAnswer = man.getAge() >= 18 ? "It's all right, come in!" : "This movie is not suitable for your age!";

   System.out.println(securityAnswer);

}
您應該使用什麼:if-else或三元運算子?就性能而言,沒有太大區別。更準確地說,它可能存在,但微不足道。這裡的問題與程式碼的可讀性有關。這在程式設計中極為重要:你寫的程式碼不僅必須正確運行,而且必須易於閱讀。畢竟,它可以「繼承」給其他程式設計師、你的同事!如果很難理解,他們和你的工作都會變得複雜——他們每 5 分鐘就會跑來向你尋求解釋。一般性建議可能聽起來像這樣:如果條件簡單且易於檢查,則可以使用三元運算子而不會造成任何損害。透過這種方式,您將減少程式碼量和檢查次數if-else,其中可能已經有很多了。但如果條件複雜且多階段,最好使用if-else。例如,在這種情況下,使用三元運算子是一個壞主意:
String securityAnswer = (man.getAge() >= 18 && (man.hasTicket() || man.hasCoupon()) && !man.hasChild())  ? "Come in!" : "You can not pass!";
所以你不會立即明白這裡發生了什麼!程式碼變得非常難以閱讀。而這一切都是因為一個困難的條件:
  • 如果一個人年滿18歲+有門票(或有免費入場券)+沒有小孩 - 那麼他們可以通過。
  • 如果條件的至少一部分回傳 false,則不能。
這顯然是更好使用的地方if-else。是的,我們的程式碼會更大,但可讀性會提高很多倍。如果你的同事繼承了這樣的程式碼,他們也不會驚慌失措:)最後,我可以向你推薦這本書。在講座中,我們談到了程式碼可讀性的主題。羅伯特馬丁 (Robert Martin) 的經典著作《乾淨的法典》就是獻給她的。 三元運算子 - 3它包含針對程式設計師的最佳實踐和建議,使您不僅可以編寫可用的程式碼,而且可以編寫易於閱讀的程式碼。 JavaRush 上有這本書的評論
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION