Java

【Java入門】Javaで文字列を扱う3つの方法String、StringBuffer、StringBuilderの違いは何?

勉強ちゃん

はじめに

Javaで文字を扱うとき、「String」を使うのが一番よく知られていますが、実は他にも「StringBuffer」や「StringBuilder」という便利なクラスがあります。

これらは、使い方が似ているように見えて、それぞれ利用場面が違います。
この記事では、それぞれの特徴と、どのように使い分けるべきかを、説明します。

Stringとは?

String はJavaで最もよく使われる文字列の型です。
特徴は不変、別の文字列と結合すると、新しいオブジェクトが作成されます。
たとえば次のように使います:

String str = "hello world !";
String resultStr = "result" + str;// 新しいオブジェクトが作られる

ただし、多く文字列はこのように、操作すると、メモリや処理が遅くなる場合があります。

StringBufferとは?

StringBuffer は、可変、文字列の変更(追加・削除など)を効率よく行えるクラスです。
たとえば以下のように使います:

StringBuffer sb = new StringBuffer("Hello world");
sb.append(" Java");
System.out.println(sb); // Hello World Java

さらに、スレッドセーフ なので、マルチスレッドでも安心して使えます。
ただし、その分処理が少し遅くなることもあります。

StringBuilderとは?

StringBuilder も StringBuffer と同じように 可変文字列を変更できる クラスです。
使い方もとても似ています。

StringBuilder sb = new StringBuilder("Hello world");
sb.append(" Java");
System.out.println(sb); // Hello World Java

違いは、スレッドセーフではない こと。
でも、処理がとても速いです。

シングルスレッドなら、StringBuilderが一番速くておすすめです。

比較

項目StringStringBufferStringBuilder
変更可能(不可/可)❌ 不可✅ 可能✅ 可能
スレッドセーフ✅ 安全✅ 安全❌ 非安全
速度遅い早い(StringBuilderより、遅い)速い
使い場面文字列が少ない
シングルスレッド/マルチスレッド
たくさん文字列を扱い
マルチスレッド
たくさん文字列を扱い
シングルスレッド

最後にまとめ

  • String は、変更がない・少ない文字列の操作に使います。
  • StringBuffer は、たくさん文字を操作したり、スレッドセーフ必要な場合、使います。
  • StringBuilder は、スレッドセーフ必要がなくて、高速に文字を操作する場合、使います。

以上です。

ABOUT ME
自己紹介
自己紹介
職業:Web開発エンジニア
こんにちは!
このブログでは、ITのお仕事で学んだ知識や、 日本での生活で学んだ知識を紹介しています。
お役に立てればうれしいです 😊
記事URLをコピーしました