[英]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;
並且null
和true
被隱式轉換為String
s。 這是有效的,因為在str + null
,編譯器知道str
是String
並將null
轉換為String
。 這是可能的,因為在 Java 中每個值都可以轉換為String
。 通過同一行論證,編譯器知道(str + null)
是一個String
,因此將true
轉換為String
。
另一方面,
str += null + boolean;
相當於
str = str + (null + boolean);
因此,首先評估null + boolean
。 由於沒有為null, boolean
類型定義運算符+
,因此會生成編譯器錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.