Ado*_*ali 1 java operator-keyword
据我了解 x+=1 与 x=x+1 一样,但为什么它在 String 中不起作用?
String str = "";
str = str + null + true; // fine
str += null + true; // Error message: The operator + is undefined for the argument type(s) null, boolean
Run Code Online (Sandbox Code Playgroud)
在 Java 中,表达式是从左到右计算的。因此
str = str + null + true;
Run Code Online (Sandbox Code Playgroud)
是相同的
str = (str + null) + true;
Run Code Online (Sandbox Code Playgroud)
and 和nullandtrue被隐式转换为Strings。这是有效的,因为 in str + null,编译器知道这str是 aString并转换null为 a String。这是可能的,因为String在 Java 中每个值都可以转换为 a 。通过同样的论证,编译器知道这(str + null)是 aString并因此转换true为 a String。
另一方面,
str += null + boolean;
Run Code Online (Sandbox Code Playgroud)
相当于
str = str + (null + boolean);
Run Code Online (Sandbox Code Playgroud)
因此,null + boolean首先评估。由于+没有为 types 定义运算符null, boolean,因此会生成编译器错误。