初学Java你一定会为String类中中实现了用加号“+”来连接两个字符串而沾沾自喜。我认为这是Java中最甜的语法糖,甚至甜到掉牙。两个字符串str1和str2。如果你使用:
str1 + str2;
这样的语法并不会改变str1的字符串内容。要写作:
str1 = str1 + str2;//str1 += str2;
你或许很清楚这个语法。而这背后所做的操作其实在内存中新建了一个新的String对象来存储str1和str2中value数组中的字符,然后再把这个新对象的引用赋给str1。你可能也觉得没有什么关系。然而:
str1 = str1 + str2 +str3 +str4 +str5;
这背后所做的事情就不是新建一个String对象这么简单了。而是从左向右依次两两连接。先新建一个对象来存储str1和str2的连接之后的字符串,再使用这个新字符串和str3进行上面的“+”操作,以此类推,“+”完所有的字符串。期间新建的字符串绝不止一个。
所以请牢记一点:千万不要在循环之中使用“+”来连接字符串。
为String类中中实现了用加号“+”来连接两个字符串而沾沾自喜。我认为这是Java中最甜的语法糖,甚至甜到掉牙。两个字符串str1和str2。如果你使用:
str1 + str2;
这样的语法并不会改变str1的字符串内容。要写作:
str1 = str1 + str2;//str1 += str2;
你或许很清楚这个语法。而这背后所做的操作其实在内存中新建了一