0

私はいくつかのコードを書き、+ =を使用して連結した文字列を使用しました(数回しか実行しないため)。

その後、別の文字列を使用し、concat()関数を使用しました。連結は機能しませんでした。

だから私はJunitで(Eclipseを使って)小さなメソッドを書きました...

@Test
public void StingConcatTest(){

    String str = "";

    str += "hello ";
    str += " and goodbye";

    String conc="";
    conc.concat("hello ");
    conc.concat(" and goodbye");
    System.out.println("str is: " + str + "\nconc is: "+ conc);

出力は...

str is: hello  and goodbye
conc is: 

つまり、私は怒っているか、何か間違ったことをしている(おそらく)、JUNITに問題があるか、JRE/日食などに問題があります。

文字列ビルダーは正常に動作していることに注意してください。

デビッド。

4

6 に答える 6

7

わかりました。この質問は少なくとも1日に数回表示されます。

Stringsであるimmutableため、Stringに対するすべての操作はnewになりStringます。

conc= conc.concat("hello ");結果を文字列に再度割り当てる必要があります

于 2012-08-31T15:31:05.750 に答える
3

あなたは試してみる必要があります:

String conc="";
conc = conc.concat("hello ");
conc = conc.concat(" and goodbye");
System.out.println("str is: " + str + "\nconc is: "+ conc);

最適化のために、次のように書くことができます。

String conc="";
conc = conc.concat("hello ").concat(" and goodbye");
System.out.println("str is: " + str + "\nconc is: "+ conc);
于 2012-08-31T15:31:37.567 に答える
2

複数の文字列を連結する場合は、StringBuilderを使用することもできます。

StringBuilder builder = new StringBuilder();
builder.append("hello");
builder.append(" blabla");
builder.append(" and goodbye");
System.out.println(builder.toString());
于 2012-08-31T15:33:54.070 に答える
1

concatは文字列を返します。元の文字列は更新されません。

于 2012-08-31T15:33:12.900 に答える
0

concat()は、連結された文字列を返します。

public static void main(String [] args) {
    String s = "foo";

    String x = s.concat("bar");

    System.out.println(x);
}
于 2012-08-31T15:32:29.057 に答える
0

String.concatは、呼び出された文字列を変更しません。文字列と引数を連結した新しい文字列を返します。

ちなみに、concatまたは+ =を使用した文字列の連結は、あまりパフォーマンスが高くありません。代わりに、クラスStringBuilderを使用する必要があります。

于 2012-08-31T15:33:53.727 に答える