面向语句的方法与面向表达式的方法

Statement oriented approach against expression oriented one

我正在浏览这个 article on java9 并遇到了这条线,它指出 Java 是面向语句的,而 REPL 是面向表达式的。

谁能解释一下这两者的区别?

一个非常快速且巧合的可见差异是,可以通过以分号 (;) 终止表达式来将以下类型的表达式制成语句。

  • 赋值表达式
  • 任何使用 ++ 或 --
  • 方法调用
  • 对象创建表达式
  • 这样的语句称为表达式语句。

所以当在你的 HelloWorld.java class 中时,以下不会编译 -

int z = 1 //(; missing)

Jshell 在其提示中成功将值存储为:

jshell> int z = 1
z ==> 1

更多

Statements are roughly equivalent to sentences in natural languages. A statement forms a complete unit of execution.

Expression 是由变量、运算符和方法调用组成的构造,它们根据语言的语法构造,计算结果为单个值。