java - 创建了多少个对象

标签 java string object bytecode stringbuilder

我正在讨论 Java 中 StringStringBuffer 的用法。这两个示例分别创建了多少个对象?

示例 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/

相关文章:

c# - 在字符串 C# 中提取日期?

javascript - 使用新的增量对象更新对象数组

java - 无法导入 org.thymeleaf.templatemode.TemplateMode

java - 如何在java中查找和替换某些字符串模式

java - "Fixing"SWT 表中的前几列,以防止它们水平滚动

javascript - 如何在 jQuery 字符串上调用函数

c# - 将引用基元转换为泛型类型

javascript - 根据分组属性加入 2 个对象数组

java - 简单的 Android 计时器游戏

java - 无法从 mongodb java 驱动程序连接到 MLab Mongo 数据库