JAVA逻辑运算

时间:2015-02-15 11:17:20

标签: java

我真的不明白这种“操作”或他们叫什么:

System.out.println((1<2) ?5: (3<4)   +   "   ");

这段代码是一样的吗?

if(1<2)
   return 5;
else if (3<4)

但在':'之后它表示死代码。这是为什么 ?

2 个答案:

答案 0 :(得分:2)

编译器在编译时计算常量表达式。因此,表达式1<2完全等同于表达式true,使条件表达式的初始部分如下所示:

System.out.println((true) ? 5 : (3<4)   +   "   ");
//                 ^^^^^^^^^^   ^^^^^
//        Important code          |
//                                |
//        Useless code -----------+

编译器不会停止评估1<2,而是继续评估表达式的其余部分,这会产生5

答案 1 :(得分:0)

您的代码很奇怪,我真的不明白您想要实现的目标。我认为这是错误的,它应该是这样的:

return 1 < 2 ? 5 : 3 < 4 ? 1 : 2;

您可以将其重写为if-else表单:

if (1 < 2)
    return 5;
if (3 < 4)
    return 1;
return 2;

由于return导致程序跳出函数,因此在此特定示例中不需要。