表达式是否被认为是语句,而不是其他方式?混乱

时间:2019-07-18 10:34:17

标签: java expression

简单语句是执行动作的语法单元。例如,返回表达式并将其赋给新的或已声明的变量。

文字被认为是一个表达式,但是如果一个表达式包含多个操作数并将它们求值为一个结果,那么我们可以说一个表达式执行计算操作,并返回其结果值。

从这个意义上说,如果表达式也执行动作,那么它就不是一种语句吗?

1 个答案:

答案 0 :(得分:1)

JLS 14.8声明语句和表达式之间的关系:

  

某些类型的表达式可以在其后加上分号来用作语句。...表达式语句是通过对表达式求值来执行的;如果表达式具有值,则将值丢弃。

声明可以是以下之一:

  

声明:

     
      
  • StatementWithoutTrailingSubstatement

  •   
  • LabeledStatement

  •   
  • IfThenStatement

  •   
  • IfThenElseStatement

  •   
  • WhileStatement

  •   
  • ForStatement

  •   

StatementWithoutTrailingSubstatement 可以是以下之一:

  

StatementWithoutTrailingSubstatement:

     
      
  • 阻止

  •   
  • EmptyStatement

  •   
  • ExpressionStatement

  •   
  • AssertStatement

  •   
  • SwitchStatement

  •   
  • DoStatement

  •   
  • BreakStatement

  •   
  • ContinueStatement

  •   
  • ReturnStatement

  •   
  • SynchronizedStatement

  •   
  • ThrowStatement

  •   
  • TryStatement

  •   

ExpressionStatement 是:

  

ExpressionStatement:

     
      
  • StatementExpression;
  •   

StatementExpression 为以下之一:

  

StatementExpression:

     
      
  • 分配

  •   
  • PreIncrementExpression

  •   
  • PreDecrementExpression

  •   
  • PostIncrementExpression

  •   
  • PostDecrementExpression

  •   
  • MethodInvocation

  •   
  • ClassInstanceCreationExpression

  •   

回答您的问题:

某些(但不是全部)表达式可以用作语句。

以下是一些可以用作语句的表达式示例:

x = 5;
new StringBuilder ();
someMethodCall ();

这是一个不能用作语句的表达式的示例(因为必须使用其值来做某事):

(x > y) ? x : y;

因此,并非所有表达式都可以视为语句。

另一方面,大多数语句不是表达式。