请比较两个代码段:
非工作代码:
(1>2)? System.out.println(1):System.out.println(2);
工作代码:
System.out.println((1>2)?1:2);
为什么第一个变体不起作用?
答案 0 :(得分:6)
条件的两个备选方案必须返回一个值,它必须是相同的类型,它将成为整个表达式的值。 System.out.println()
为void
。
在第二种情况下,两个备选方案是int
s(有效),表达式的类型是int
。
并且,感谢Marko Topolnik的评论:条件不是if..then..else
的简写;它是一种表达,因此它不能占据陈述的位置。