Java是否自动在预定义的Java变量中保存"evaluate"语句?

Jas*_*n V 9 java operator-overloading concatenation

假设我执行一个简单的添加/连接语句:

variable + newInput
Run Code Online (Sandbox Code Playgroud)

无需将计算值设置为新变量,如:

variable = variable + newInput
Run Code Online (Sandbox Code Playgroud)

要么

variable += newInput
Run Code Online (Sandbox Code Playgroud)

Java是否有某种说明符能够使用计算的sum或连接字符串?

显然在Python中它会自动保存在隐式全局变量中_- 它可以实现

Print(_)
Run Code Online (Sandbox Code Playgroud)

Java中有这样的东西吗?

Vas*_*sov 6

.它没有这样的东西.您必须将计算值分配给变量,否则它将丢失并由垃圾收集器收集.

最好的选择是使用特殊运算符,以便不使用额外变量,而是将结果分配给旧变量.这是一个速记操作符.

Variable += NewInput
Run Code Online (Sandbox Code Playgroud)


use*_*ica 5

不仅仅是不保存结果,如果程序包含这样的行,Java将彻底拒绝编译程序,正是因为如果允许,结果将是未保存的并且不可用:

public class Main
{
    public static void main(String[] args)
    {
        1+2;
    }
}
Run Code Online (Sandbox Code Playgroud)

结果:

Main.java:5: error: not a statement
        1+2;
         ^
1 error
Run Code Online (Sandbox Code Playgroud)

Java不允许任意表达式作为语句,并且添加表达式不被视为有效的Java语句.

JLS列出了作为语句允许的表达式:

ExpressionStatement:
  StatementExpression ;

StatementExpression:
  Assignment 
  PreIncrementExpression 
  PreDecrementExpression 
  PostIncrementExpression 
  PostDecrementExpression 
  MethodInvocation 
  ClassInstanceCreationExpression
Run Code Online (Sandbox Code Playgroud)

分配,增量,减量,方法调用,以及new Whatever()所有具有副作用或潜在副作用的事物.除非隐式toString()调用+可能产生副作用,否则不会产生副作用,因此为了捕获可能的错误,Java禁止将附加表达式作为语句.