Java
 Computer >> コンピューター >  >> プログラミング >> Java

StringとStringBufferの違い


文字列は不変のクラスであり、そのオブジェクトは作成後に変更できませんが、他のオブジェクトを確実に参照します。複数のスレッドはオブジェクトの状態を変更できないため、不変のオブジェクトはスレッドセーフであるため、マルチスレッド環境で非常に役立ちます。

文字列バッファは、文字列の反転、文字列の連結などの文字列オブジェクトの操作を行うために使用できる可変クラスです。文字列の新しいオブジェクトを作成せずに文字列を変更できます。文字列バッファもスレッドセーフです。

また、string concat +演算子は、内部でStringBufferまたはStringBuilderクラスを使用します。違いは次のとおりです。

Sr。いいえ。 キー 文字列 StringBuffer
1
基本
Stringは不変のクラスであり、作成後にオブジェクトを変更することはできません
文字列バッファは、文字列オブジェクトの操作を行うために使用できる可変クラスです。
2
メソッド
メソッドが同期されていません
すべてのメソッドはこのクラスで同期されます。
3
パフォーマンス
速い
複数のスレッドは同時にアクセスできないため、低速です
4。
メモリ領域
コンストラクターまたはメソッドを使用して文字列を作成すると、それらの文字列はヒープメモリとSringConstantPoolに格納されます
ヒープスペース

文字列の例

public class Main {
   public static void main(String args[]) {
      String s1 = "Hello Tutorials Point";
      String upperCase = s1.toUpperCase();
      System.out.println(upperCase);
   }
}

StringBufferの例

public class StringBufferExample{
   public static void main(String[] args){
      StringBuffer buffer=new StringBuffer("Hi");
      buffer.append("Java 8");
      System.out.println("StringBufferExample" +buffer);
   }
}

  1. WindowsXPとWindows7の違いトップ10

    他の多くの人がそうであるようにWindowsVistaをスキップした場合、WindowsXPからWindows7にアップグレードするときにショックを受ける可能性があります。Microsoftの最新のオペレーティングシステムは、以前のバージョンのWindowsからの使いやすさ、利便性、および全体的なコンピューティングの大きな変化です。 。 すべてが驚異的な変更であるわけではありませんが、WindowsXPとWindows7の違いのトップ10を以下に示します。これらの変更の多くは、XPでの動作に慣れているため、大きな問題のように思われるかもしれません。 XPからWindows7へのアップグレード

  2. Python2.xとPython3.xの違いは?

    コーディングコミュニティでは、Python2.xまたはPython3.xのどちらのPythonバージョンを学ぶのが最適かについて常に議論があります。 以下は、pyton2.xとpython3.xの主な違いです 1。印刷機能 python 2.xでは、「print」はステートメントとして扱われ、python3.xは明示的に「print」を関数として扱います。これは、印刷内の項目を標準的な方法で関数の括弧に渡す必要があることを意味します。そうしないと、構文エラーが発生します。 #Python 2.7 print 'Python', python_version() print