不知道我应该用StringBuilder做什么

时间:2015-07-30 23:58:24

标签: java methods stringbuilder

我被要求在下面列出的方法的新类中提供我自己的实现。我不确定我应该怎么做他们。有任何想法吗?我刚刚使用C ++切换到java。大多数区域在两者之间至少有些相似,但我对字符串和方法有困难。

好的,这一切都有道理,但我应该用这些方法做什么?喜欢第一个"公共MystringBuilder1(String s)"。只是声明变量" s"作为字符串类型?我该如何实现呢?如果你把" public MystringBuilder1(String s)"在一个类中,它只是返回错误。这本书从来没有解释任何这些方法然后说"这里做了这个"所以我完全迷失了。也许我只是错过了重点?

public MyStringBuilder1(String s);

public MyStringBuilder1 append(MyStringBuilder1 s);

public MyStringBuilder1 append(int i);

public String toString();

2 个答案:

答案 0 :(得分:0)

Java API中StringBuilder类的目的是比本机字符串类更有效地构造字符串。如果您在循环中处理大量数据并将其存储在字符串中,这可能很有用。 Java的本机字符串类是不可变的,这意味着当连接两个字符串时,必须同时复制它们以创建新字符串。不可变的字符串有一些优点,但速度不是其中之一。

这个任务可能要求的是你自己实现这个类。找到一个数据结构,允许您有效地将新字符串附加到类中,也可以在调用toString方法时将其转换为字符串,然后围绕此数据结构实现所需的方法。

答案 1 :(得分:0)

当您想要连接多个分配的多个字符串时,StringBuilder类确实很有帮助。(例如:在循环中)

比如说你有这个:

string firstString = "first" + "second";

此语句将创建一个大小等于(“first”。length()+“second”。length())的新字符串,并将两个字符串复制到新字符串。

当您执行以下操作时,StringBuilder类的强度就出现了:

StringBuilder strBuilder = new StringBuilder();
for(string str:strings){
    strBuilder.append(str);
}
strBuilder.toString();

而不是:

String wholeString = "";
for(string str:strings){
     wholeString += str;
}

这是非常低效的,因为对于循环的每次迭代,都会为每个连接创建一个新字符串。

StringBuilder类将跟踪串联中的每个字符串,并且在您追加它时不会创建新字符串。因此,您可以使用append方法连接10个字符串10次,并且在调用toString方法时只会创建1个字符串。