JavaRush /Java 博客 /Random-ZH /Java中的三元运算符

Java中的三元运算符

已在 Random-ZH 群组中发布
你好!今天的讲座不会很长,但绝对有用:) 我们将讨论所谓的三元运算符三元运算符 - 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