【问题标题】:How does the ternary operator work三元运算符是如何工作的
【发布时间】:2018-08-31 18:54:24
【问题描述】:

我看不懂这段代码;

谁能写的好让我也能理解。

public void deleteStudentsPersistence(Student student) {
        em.remove(em.contains(student) ? student : em.merge(student));
    } 

【问题讨论】:

  • 如果它回答了您的问题,请随时接受我的回答,否则请继续询问更多细节

标签: java ternary-operator


【解决方案1】:

您在那里使用的运算符称为三元运算符,它的工作方式几乎与 if-else 语句的工作方式相同。考虑下面的陈述:

int min = (a < b) ? a : b;

这意味着:计算(a &lt; b)的值,如果为真,则min的值为a,否则,min的值为b。它可以这样关联到 if-else 语句: If (a

现在回到你的问题......

em.remove(em.contains(student) ? student : em.merge(student));

这意味着如果em.contains(student) 为真,则执行em.remove(student),如果为假,则执行em.remove(em.merge(student))

PS:

显然,在许多涉及基于双向条件为变量赋值的实际案例中,这可以巧妙地替代 if 语句。关于 this post 中看到的“更有效”的方法有很大的争论,但我个人更喜欢使用三元运算符,因为它的语法长度和可读性相对较短。

我希望这会有所帮助.. 编码愉快!

【讨论】:

  • 很高兴它有帮助,编码愉快! ;-)
【解决方案2】:

这是一个三元运算符,称为条件运算符。也可以这样写:

public void deleteStudentsPersistence(Student student) {
        if (em.contains(student)){
        em.remove(student);
        } else{
        em.remove(em.merge(student));
        }
    } 

基本上,它在删除之前检查 em 是否包含学生,否则将其合并

【讨论】:

    猜你喜欢
    • 2010-10-02
    • 1970-01-01
    • 2012-11-11
    • 2013-07-12
    • 2015-01-11
    • 2012-01-04
    • 2021-10-06
    • 1970-01-01
    相关资源
    最近更新 更多