Java 三元运算符是如何工作的

Java 三元运算符是如何工作的,java,ternary-operator,Java,Ternary Operator,我不懂这个代码 有人能把它写得恰到好处吗?这样我也能理解 public void deleteStudentsPersistence(Student student) { em.remove(em.contains(student) ? student : em.merge(student)); } 这是一个三元运算符,称为条件运算符。也可以这样写: public void deleteStudentsPersistence(Student student) {

我不懂这个代码

有人能把它写得恰到好处吗?这样我也能理解

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

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

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

基本上,它会在删除前检查em是否包含student,否则会将其合并。在那里使用的运算符称为三元运算符,其工作方式与if-else语句的工作方式几乎相同。考虑下面的声明:

int min = (a < b) ? a : b;
这意味着如果
em.contains(student)
为true,则执行
em.remove(student)
,如果为false,则执行
em.remove(em.merge(student))

PS:

显然,在许多实际情况下,需要根据双向条件为变量指定一个值,这可以微妙地替代if语句。关于“更有效”的方法有很大的争议,如中所示,但我个人更喜欢使用三元运算符,因为它的语法长度相对较短,可读性较好


我希望这有帮助。。快乐的编码

如果我的答案能回答您的问题,请随意接受我的答案,或者让我询问更多细节。很高兴它能帮助您,祝您愉快编码!;-)
em.remove(em.contains(student) ? student : em.merge(student));