8

我是来自python的java新手。我想知道如何在java中乘以一个字符串。在python中我会这样做:

str1 = "hello"
str2 = str1 * 10

字符串 2 现在具有值:

#str2 == 'hellohellohellohellohellohellohellohellohellohello'

我想知道在java中实现这一目标的最简单方法是什么。我必须使用 for 循环还是有内置方法?

编辑 1

感谢您的回复,我已经找到了一个优雅的解决方案来解决我的问题:

str2 = new String(new char[10]).replace("\0", "hello");

注意:这个答案最初是由 user102008 在这里发布的:https ://stackoverflow.com/a/4903603

4

4 回答 4

9

虽然不是内置的,但 Guava 有一种使用Strings的简短方法:

str2 = Strings.repeat("hello", 10);
于 2013-03-05T14:52:00.143 回答
3

您可以使用字符串缓冲区。

String str1 = "hello";
StringBuffer buffer = new StringBuffer(str1);
for (int i = 0; i < 10; i++) {
    buffer.append(str1);
}
str2 = buffer.toString();

有关文档,请参阅http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/StringBuffer.html

如果您不打算使用任何线程,则可以使用StringBuilder与哪种工作方式相同StringBuffer但不是线程安全的工作方式。有关详细信息,请参阅http://javahowto.blogspot.ca/2006/08/stringbuilder-vs-stringbuffer.html(感谢 TheCapn)

于 2013-03-05T14:52:07.490 回答
2

for 循环可能是你最好的选择:

for (int i = 0; i < 10; i++)
  str2 += "hello";

如果您正在执行大量迭代(在 100+ 范围内),请考虑使用StringBuilder对象,因为每次修改字符串时,您都在分配新内存并释放旧字符串以进行垃圾回收。如果您多次这样做,这将是一个性能问题。

于 2013-03-05T14:52:28.387 回答
0

我认为没有某种循环就没有办法做到这一点。

例如:

String result = "";
for (int i=0; i<10; i++){
    result += "hello";
}
于 2013-03-05T14:51:15.893 回答