我正在讨论 Java 中 String
和 StringBuffer
的用法。这两个示例分别创建了多少个对象?
示例 1:
String s = "a";
s = s + "b";
s = s + "c";
示例 2:
StringBuilder sb = new StringBuilder("a");
sb.append("b");
sb.append("c");
在我看来,Ex 1 将创建 5 个对象,而 Ex 2 将创建 4 个对象。
最佳答案
我使用内存分析器来获取准确的计数。
在我的机器上,第一个示例创建了 8 个对象:
String s = "a";
s = s + "b";
s = s + "c";
String
类型的两个对象;StringBuilder
类型的两个对象;char[]
类型的四个对象。
另一方面,第二个例子:
StringBuffer sb = new StringBuffer("a");
sb.append("b");
sb.append("c");
创建 2 个对象:
- 一个
StringBuilder
类型的对象; - 一个
char[]
类型的对象。
这是使用 JDK 1.6u30。
附言为了使比较公平,您可能应该在第二个示例的末尾调用 sb.toString()
。
关于java - 创建了多少个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10443492/