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

StringBuffer を使用できます。

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 に答える