在本java文档教程中:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/expressions.html
system.out.println(),这是一个void方法调用,不算作表达式,但在规范的以下链接中:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/expressions.html
据说表达式可以是计算结果为零(void)的东西。这导致了我的问题和困惑:在java中,void方法调用是否算作表达式?背后的原因是什么呢?
1条答案
按热度按时间8xiog9wr1#
对void方法的调用仍然是一个表达式。所有方法调用都是(主)表达式,如产生式规则所指定:
只是语言中的其他规则让你无法用它做很多事情。这样的表达式属于
void
. 不能声明类型为的变量void
.void
没有任何成员等。在lambda表达式体中,void方法调用是表达式这一事实变得很重要。考虑生产规则:
如果void方法调用不是表达式,则无法写入:
上述方法之所以有效,是因为
System.out.println()
是表达式,因此可以用作lambda体。如果不是表达式,则必须使用块:归根结底,表达式是一种语法性的东西,而在语法层次上,解析器无论如何也不能判断方法的返回类型:d。