まず、String、StringBuffer、およびStringBuilderの類似点について説明します。
これらの3つがするために使用されている文字列パッケージの
3が継承されたインタフェースのCharSequenceキャッチ、フィギュアのショーを
次の3つの異なる話を!
違いの1つ:
Stringの値を作成から破棄に変更することはできません。
StringBufferとStringBuilderは、文字配列に格納されているAbstractStringBuilderクラスを継承しているため、可変です。
したがって、使用シナリオ:
頻繁に変更されない変更を保存するString、頻繁に変更される変更を保存するStringBufferおよびStringBuilder。Stringを使用して変数を格納すると、新しいオブジェクトが作成され、古いオブジェクトがリサイクルされるたびに、プログラムのパフォーマンスに影響を与えると想像してください。
文字列変更の方法は、最初にStringBufferを作成し、次にStringBufferのappendメソッドを呼び出し、最後にtoString()メソッドを呼び出して結果を返すことです。
代码:
String str = "王";
str += "胖子";
实际进行的操作:
StringBuffer sb = new StringBuffer(str);
sb.append("胖子");
str = sb.toString();
2番目の違い:
作成方法:
// String 可以赋值或构造器
String a="王小胖";
String b=new String("王二胖");
// StringBuffer 构造器
StringBuffer c=new StringBuffer("王瘦瘦");
// StringBuilder 构造器
StringBuilder d=new StringBuilder("王小瘦");
3番目の違い:
equalsメソッドとhashCodeメソッド
Stringはequals()メソッドとhashCode()メソッドを実装しているため、new String( "java")。equals(new String( "java"))の結果はtrueです。
StringBufferはequals()メソッドとhashCode()メソッドを実装していません。したがって、new StringBuffer( "java")。equals(new StringBuffer( "java"))の結果はfalseであり、Javaコレクションクラスに格納されているStringBufferオブジェクトが表示されます。問題。
4つの異なるポイント:
使用されるシナリオ:
StringBufferとStringBuilderはどちらも文字列を変更する機能を備えており、使用法は似ていますが、次の点が異なります
。String:操作の数が少なく、
StringBuilderはシングルスレッド操作に対して安全ではなく、StringBufferは
大量のデータのマルチスレッド操作に対してスレッドセーフです。