我真的不明白这种“操作”或他们叫什么:
System.out.println((1<2) ?5: (3<4) + " ");
这段代码是一样的吗?
if(1<2)
return 5;
else if (3<4)
但在':'之后它表示死代码。这是为什么 ?
答案 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导致程序跳出函数,因此在此特定示例中不需要。