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中有这样的东西吗?
不.它没有这样的东西.您必须将计算值分配给变量,否则它将丢失并由垃圾收集器收集.
最好的选择是使用特殊运算符,以便不使用额外变量,而是将结果分配给旧变量.这是一个速记操作符.
Variable += NewInput
Run Code Online (Sandbox Code Playgroud)
不仅仅是不保存结果,如果程序包含这样的行,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语句.
ExpressionStatement:
StatementExpression ;
StatementExpression:
Assignment
PreIncrementExpression
PreDecrementExpression
PostIncrementExpression
PostDecrementExpression
MethodInvocation
ClassInstanceCreationExpression
Run Code Online (Sandbox Code Playgroud)
分配,增量,减量,方法调用,以及new Whatever()所有具有副作用或潜在副作用的事物.除非隐式toString()调用+可能产生副作用,否则不会产生副作用,因此为了捕获可能的错误,Java禁止将附加表达式作为语句.