Java += operator



据我所知,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 

在Java中,表达式是从左到右计算的。因此

str = str + null + true;

与相同

str = (str + null) + true;

并且nulltrue被隐式地转换为Strings。这是因为在str + null中,编译器知道strString,并且将null转换成String。这是可能的,因为在Java中,每个值都可以转换为String。通过同样的论证,编译器知道(str + null)String,因此将true转换为String

另一方面,

str += null + boolean;

相当于

str = str + (null + boolean);

因此首先评估null + boolean。由于没有为类型null, boolean定义运算符+,因此会生成编译器错误。

相关内容

  • 没有找到相关文章

最新更新