文字列バッファと文字列ビルダーの違い
Java で作業している場合でも Android で作業している場合でも、この問題に遭遇することは避けられません。実際、通常、開発プロセス中にこの問題に苦労することはありません。この質問は面接で必須の古典的な質問です。今日はそれをまとめます。
#StringBuffer と StringBuilder の違い
StringBuffer と StringBuilder のメソッドと関数は、次のメソッドを除いて完全に同等です。 StringBuffer それらのほとんどは synchronized キーワードで変更されているため、スレッドセーフであり、同時操作をサポートし、マルチスレッドでの使用に適しています。 StringBuilder は同時操作をサポートしておらず、直線的に安全ではなく、マルチスレッドでの使用には適していません。新しく導入された StringBuilder クラスはスレッドセーフではありませんが、単一スレッドでのパフォーマンスは StringBuffer よりも優れています。 (推奨学習:JAVA ビデオ チュートリアル )
次に、一目でわかるテスト プロセスと結果のコードを直接貼り付けます:
public class StringTest { public static String BASEINFO = "Mr.Y"; public static final int COUNT = 2000000; /** * 执行一项String赋值测试 */ public static void doStringTest() { String str = new String(BASEINFO); long starttime = System.currentTimeMillis(); for (int i = 0; i < COUNT / 100; i++) { str = str + "miss"; } long endtime = System.currentTimeMillis(); System.out.println((endtime - starttime) + " millis has costed when used String."); } /** * 执行一项StringBuffer赋值测试 */ public static void doStringBufferTest() { StringBuffer sb = new StringBuffer(BASEINFO); long starttime = System.currentTimeMillis(); for (int i = 0; i < COUNT; i++) { sb = sb.append("miss"); } long endtime = System.currentTimeMillis(); System.out.println((endtime - starttime) + " millis has costed when used StringBuffer."); } /** * 执行一项StringBuilder赋值测试 */ public static void doStringBuilderTest() { StringBuilder sb = new StringBuilder(BASEINFO); long starttime = System.currentTimeMillis(); for (int i = 0; i < COUNT; i++) { sb = sb.append("miss"); } long endtime = System.currentTimeMillis(); System.out.println((endtime - starttime) + " millis has costed when used StringBuilder."); } /** * 测试StringBuffer遍历赋值结果 * * @param mlist */ public static void doStringBufferListTest(List<String> mlist) { StringBuffer sb = new StringBuffer(); long starttime = System.currentTimeMillis(); for (String string : mlist) { sb.append(string); } long endtime = System.currentTimeMillis(); System.out.println(sb.toString() + "buffer cost:" + (endtime - starttime) + " millis"); } /** * 测试StringBuilder迭代赋值结果 * * @param mlist */ public static void doStringBuilderListTest(List<String> mlist) { StringBuilder sb = new StringBuilder(); long starttime = System.currentTimeMillis(); for (Iterator<String> iterator = mlist.iterator(); iterator.hasNext();) { sb.append(iterator.next()); } long endtime = System.currentTimeMillis(); System.out.println(sb.toString() + "builder cost:" + (endtime - starttime) + " millis"); } public static void main(String[] args) { doStringTest(); doStringBufferTest(); doStringBuilderTest(); List<String> list = new ArrayList<String>(); list.add(" I "); list.add(" like "); list.add(" BeiJing "); list.add(" tian "); list.add(" an "); list.add(" men "); list.add(" . "); doStringBufferListTest(list); doStringBuilderListTest(list); } }
実行結果を見てください:
2711 millis has costed when used String. 211 millis has costed when used StringBuffer. 141 millis has costed when used StringBuilder. I like BeiJing tian an men . buffer cost:1 millis I like BeiJing tian an men . builder cost:0 millis
JAVA 開発チュートリアル 列にアクセスして学習してください。
以上が文字列バッファと文字列ビルダーの違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











StringBuffer オブジェクトは、通常、複数のスレッドが同じ StringBuffer オブジェクトに同時にアクセスしようとする可能性があるマルチスレッド環境で安全に使用できます。 StringBuilder は StringBuffer クラスのスレッドセーフな代替品であり、同期された > メソッドがないため、はるかに高速に動作します。単一スレッドで多くの文字列操作を実行する場合、このクラスを使用するとパフォーマンスが向上します。例 publicclassCompareBuilderwithBufferTest{ publicstaticvoidmain(String[]a

StringBuffer クラスの toString() メソッドを使用して、StringBuffer を文字列に変換します。Java では、StringBuffer クラスは、変更可能な文字列を処理するために使用されるクラスです。このクラスには、文字列を変更および操作するための便利なメソッドが多数用意されています。 StringBuffer オブジェクトを文字列に変換する必要がある場合、toString() メソッドを使用してこれを実現できます。 StringBuffer クラスの toString() メソッドは、

StringBuffer クラスの reverse() メソッドを使用して、文字列を反転します。プログラミングでは、文字列の反転など、文字列に対して何らかの操作を実行する必要があることがよくあります。 Java では、StringBuffer クラスの reverse() メソッドを使用して文字列の反転を実現できます。このメソッドの使用方法を見てみましょう。まず、以下に示すように、StringBuffer オブジェクトを作成し、反転する文字列をパラメータとしてそのコンストラクターに渡す必要があります。

String クラスの基本概念 String クラスは参照データ型であり、基本データ型ではありません。 Java では、"" (ダブルクォーテーション) で囲まれていれば String オブジェクトになります。 Java では、二重引用符で囲まれた文字列は不変であると規定されています。これは、「abc」が誕生から消滅まで「abcd」または「ab」になることはできないことを意味します。 JDK では、二重引用符で囲まれた文字列はメソッド領域の文字列定数プールに格納されます。 (実際の開発では文字列を頻繁に使用するため、実行効率を考慮してメソッド領域の文字列定数プールに文字列を配置します。

StringBuffer クラスの substring() メソッドを使用して、文字列の一部の部分文字列を取得します Java プログラミングでは、文字列の処理や操作が必要になることがよくあります。 StringBuffer クラスは、文字列を操作するための一連の便利なメソッドを提供する、一般的に使用される文字列クラスです。中でも、substring() メソッドは非常によく使われるメソッドで、文字列の内容の一部、つまり部分文字列を取得するために使用できます。 StringBufferクラスの使い方を紹介します。

文字列を変更する場合は、StringBuffer クラスと StringBuilder クラスを使用する必要があります。 String クラスとは異なり、StringBuffer クラスと StringBuilder クラスのオブジェクトは、新しい未使用のオブジェクトを作成することなく、何度でも変更できます。 StringBuffer: StringBuffer クラスを使用すると、新しいオブジェクトを生成するのではなく、毎回 StringBuffer オブジェクト自体が操作されるため、文字列を変更する必要がある場合は StringBuffer を使用することをお勧めします。 StringBuilder: StringBuilder クラスは Java5 で提案され、S に似ています。

StringBuffer クラスの reverse() メソッドを使用して文字列内の文字の順序を反転する Java では、文字列内の文字の順序を反転するさまざまな方法があります。シンプルで効率的な方法の 1 つは、StringBuffer クラスの reverse() メソッドを使用することです。この記事では、このメソッドを使用して文字列を反転する方法を紹介し、関連するコード例を示します。 StringBuffer クラスは、文字列の処理に使用される Java の可変クラスです。 Stringクラスとは異なり、

Java の文字列にコンテンツを挿入するには、StringBuffer クラスの insert() メソッドを使用します。Java プログラミングでは、StringBuffer クラスは非常に一般的に使用される文字列操作クラスです。文字列を変更するためのさまざまなメソッドが提供されていますが、その中で、insert() メソッドは文字列にコンテンツを挿入するための非常に便利なメソッドです。 insert() メソッドの機能は、指定された位置に文字、文字配列、文字列、または他のデータ型から変換された文字列を挿入することです。
