When an expression in a program is evaluated (executed), the result denotes one of three things:
• A variable (§4.12) (in C, this would be called an lvalue)
• Nothing (the expression is said to be void)
Evaluation of an expression can also produce side effects, because expressions may contain embedded assignments, increment operators, decrement operators, and method invocations.
An expression denotes nothing if and only if it is a method invocation (§15.12) that invokes a method that does not return a value, that is, a method declared
void (§8.4). Such an expression can be used only as an expression statement (§14.8), because every other context in which an expression can appear ...