在说StringBuffer和StringBuilder之前,我们先来讨论一下Java中字符串的拼接。
Java中原始的字符串的拼接
这是Java中原始的字符串拼接,一共创建了三个字符串变量,每个变量都有一个独立的内存空间,当把三个变量拼接的结果赋值给s1,此时的s1是开辟了新的内存空间的,存放了三个字符串拼接结果的临时变量,最终这个临时变量把内存空间给了s1,也就是s1又有了一个内存空间。整个流程下来,一共需要开辟4个内存空间,对于内存的消耗很大,因此不适合用在实际开发中。
而StringBuffer和StringBuilder中提供的字符串拼接方法append可以很好地解决内存消耗过大的问题。其内部原理是这样:StringBuffer和StringBuilde对象调用append方法拼接好字符串后,三个字符串变量就会被当作垃圾释放掉了,有效地节省了内存空间。