【问题标题】:Can we use command in ternary operator (Java)?我们可以在三元运算符(Java)中使用命令吗?
【发布时间】:2020-05-09 13:09:03
【问题描述】:

这是一个有效的代码:

String a = "first";
String b = "second";
String object;
System.out.println(object != null ? a : b);

但事实并非如此:

String a = "first";
String b = "second";
String object;
object != null ? System.out.println(a) : System.out.println(b);

为什么?

【问题讨论】:

  • 因为第一个使用表达式,第二个使用语句。这就是它被称为运算符的原因,它用于表达式中。

标签: java operator-keyword ternary


【解决方案1】:

每个spec

第二个或第三个操作数表达式调用 void 方法是编译时错误。

println 是来自PrintStream 类(System.out 是其实例)的一个方法,它的返回类型为void

考虑到操作符本身应该返回一些东西以供在以下情况下使用:

 bool a = true;
 int b = a ? 1 : 2;

如果你给一个方法返回void(即什么都没有)作为第二个和/或第三个表达式,那么运算符本身会返回什么?

最后,Java 没有称为“命令”的词法结构。 System.out.println 是一个与其他方法一样的方法调用,它只是不返回任何内容。

【讨论】:

    【解决方案2】:

    三元运算符应始终返回一个值,而在 SysOut 的情况下,返回类型为 void。

    【讨论】: