为什么前者要比后者更好(用简单的英语回答更好)?
为什么这种方法更好
str = "hello ";
str2 = "world";
str += str2;
比
str = "hello ";
str2 = "world";
str = str + str2;
答案 0 :(得分:2)
这里的问题是,更好的方法是什么。让我们假设,不太复杂的汇编代码,也许在速度和大小上都有优势。
这还取决于变量的限定符,并且在很大程度上取决于编译器和编译器选项。
天真的方法和理解始终是:对于x = x + y;
,首先将计算加法的结果,然后将此结果(临时的)分配给原始变量。对于x += y
,字符串y将直接附加到x。
如果是字符串,则通过调用字符串append函数来实现加法。
并且,如前所述,如果您不启用编译器优化,则将首先进行追加操作,然后进行赋值。您可以检查生成的汇编代码。因此x = x + y
确实比x += y
更复杂。但是,如果您启用了编译器优化功能(例如,对于gcc为-O3),则不会有任何区别。
“更好”可能还有其他解释。更具可读性,或更易于维护,或者符合某些编码准则或某些操作员过载约束。因此以某种方式很难给出确切的答案,其结果可能基于观点。