在 java 中,String 类型其实是一个常量,尽管看起来是一个变量,而也一直当成变量来用,然而,大量使用会造成很多资源的浪费。替代方案是使用 StringBuffer,这才是一个变量。
使用 StringBuffer 有很多坑。
(1)不能直接用 .equals("") 和一个字符串常量比较。尽管也不报错,但总是返回 false。
(2)两个 StringBuffer 一个给另一个赋值怎么办?
StringBuffer a = new StringBuffer("a");
StringBuffer b = new StringBuffer();
b = a; // 这是错的,因为,a 是一个引用,以后改变 b ,也会改变 a 。
b.setLength(0);
b.append(a.toString()); // 这是正确的。实际上,使用 StringBuffer 是很扯蛋的事情:不断 toString() 的花销不比 String 的不断分身更省资源。
本文探讨了Java中String类型作为常量而非变量的特点及其可能导致的资源浪费问题,并介绍了StringBuffer作为变量的使用方式及注意事项。
3万+

被折叠的 条评论
为什么被折叠?



