4

私は決して Java プログラマーではないので、これはかなり基本的なことのように思えるかもしれません。

コード行を短くしたい場合、これらのうちどれが「より良い」ものですか。

String str = "First part of a string.";
str += " Second part of string.";

また

String str = "First part of string." +
" Second part of string."

私の質問は、+= と + の両方で新しい String オブジェクトを作成することだと思いますか? もしそうなら、どちらも実際には優れていません。それは単なる好みの問題です. 私が挙げた例は、実世界での使用の良い例です。どちらの方法でも連結を 3 回から 1000 回行う比較はしたくありません。

ありがとう

4

5 に答える 5

3

私は2番目の方法を好みます。その理由は、コンパイラがコンパイル時に連結の結果を単一の文字列に結合する可能性が高いためです。最初の方法は実行時に行われる可能性があります (実際の実装によって異なります)。何かをしていない限り、それは小さなことです。ただし、何百万回も。

于 2012-04-13T16:16:33.147 に答える
2

コンパイル時に 2 番目の例を連結するには、Java コンパイラが実際に必要です。15.28参照。定数式3.10.5. 文字列リテラル

于 2012-04-13T16:23:59.357 に答える
0
StringBuilder sb = new StringBuilder();
sb.append("First part");
sb.append("Second part");
System.out.print(sb.toString());
于 2012-04-13T16:27:43.100 に答える
0

これをコンパイルしてから逆コンパイルすると、次のようになります。

public static void main(String[] args) {
    String str = "First";
    str += " Second";
    System.out.println(str);

    String str2 = "First" + " Second";
    System.out.println(str2);
}

なります:

public static void main(String args[]) {
    String s = "First";
    s = (new StringBuilder()).append(s).append(" Second").toString();
    System.out.println(s);
    String s1 = "First Second";
    System.out.println(s1);
}

したがって、2 番目の方法の方が適しています。

于 2012-04-13T16:18:19.247 に答える