这是一个工作代码:
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);
Why?
每一个spec https://docs.oracle.com/javase/specs/jls/se11/html/jls-15.html#jls-15.25
如果第二个或第三个操作数表达式是 void 方法的调用,则会产生编译时错误。
println
是一种方法,来自PrintStream
类(其中System.out
是一个实例)并且它的返回类型为void
.
考虑一下操作符本身应该返回一些东西以供在以下情况下使用:
bool a = true;
int b = a ? 1 : 2;
如果你给出一个方法返回void
(即什么都没有)作为第二个和/或第三个表达式,运算符本身会返回什么?
最后,Java 没有称为“命令”的词法结构。System.out.println
是一个像任何其他方法调用一样的方法调用,它只是不返回任何内容。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)