-1

プログラムで次のコードをたくさん実行する必要があります

int index=temp.lastIndexOf("\\n== External links ==\\");
        System.out.println( temp.substring(index))

Indexof,substring,contains が含まれているため、これらの操作は stringbuffer または string でより適切になりますか?

もしそうなら、なぜあなたは私を詳しく説明できますか?

4

3 に答える 3

2

String.substring新しい文字列を作成せず、元の文字列にインデックスを付けるだけなので、文字列の内容をコピーするコストを回避できます。したがって、これだけで十分な場合は、おそらく十分です (特に/にはメソッドがないStringため、使い方は簡単です)。StringBufferStringBuildercontains

OTOHStringBufferは同期されているため絶対に使用しないでください。これにより、パフォーマンスが低下StringBuilderします。Java5 以降を使用している場合は、代わりに検討してください。

最終的に、確実に知る唯一の方法は、実際のデータを使用して、自分の環境で各オプションを測定することです。

于 2012-05-14T08:48:32.473 に答える
0

多くの文字列操作を実行する場合は、String よりも StringBuffer または StringBuilder を使用することをお勧めします。これは、String を使用すると、「文字列定数プール」に未参照の String オブジェクトが多数残るためです。

さらに、StringBuilder は StringBuffer よりも優先されます (API はまったく同じですが)。そのメソッドはスレッドセーフではない (つまり、同期されている) ため、より高速に実行されます。

于 2012-05-14T08:47:20.883 に答える
0

containsStringBuilder に StringBufferがないか、ありません。indexOf と substring は String 自体に委譲されます。StringBuffer と StringBuilder は、連結の場合は高速ですが、文字列を調べる場合: String クラス自体を取得します。

于 2012-05-14T08:49:22.103 に答える