【保存版】Javaでよく使われるファイルの読み書き方法まとめ
勉強ちゃん
いろいろ勉強
Javaで文字を扱うとき、「String」を使うのが一番よく知られていますが、実は他にも「StringBuffer」や「StringBuilder」という便利なクラスがあります。
これらは、使い方が似ているように見えて、それぞれ利用場面が違います。
この記事では、それぞれの特徴と、どのように使い分けるべきかを、説明します。
String
はJavaで最もよく使われる文字列の型です。
特徴は不変、別の文字列と結合すると、新しいオブジェクトが作成されます。
たとえば次のように使います:
String str = "hello world !";
String resultStr = "result" + str;// 新しいオブジェクトが作られる
ただし、多く文字列はこのように、操作すると、メモリや処理が遅くなる場合があります。
StringBuffer
は、可変、文字列の変更(追加・削除など)を効率よく行えるクラスです。
たとえば以下のように使います:
StringBuffer sb = new StringBuffer("Hello world");
sb.append(" Java");
System.out.println(sb); // Hello World Java
さらに、スレッドセーフ なので、マルチスレッドでも安心して使えます。
ただし、その分処理が少し遅くなることもあります。
StringBuilder
も StringBuffer
と同じように 可変、文字列を変更できる クラスです。
使い方もとても似ています。
StringBuilder sb = new StringBuilder("Hello world");
sb.append(" Java");
System.out.println(sb); // Hello World Java
違いは、スレッドセーフではない こと。
でも、処理がとても速いです。
シングルスレッドなら、StringBuilderが一番速くておすすめです。
項目 | String | StringBuffer | StringBuilder |
---|---|---|---|
変更可能(不可/可) | ❌ 不可 | ✅ 可能 | ✅ 可能 |
スレッドセーフ | ✅ 安全 | ✅ 安全 | ❌ 非安全 |
速度 | 遅い | 早い(StringBuilderより、遅い) | 速い |
使い場面 | 文字列が少ない シングルスレッド/マルチスレッド | たくさん文字列を扱い マルチスレッド | たくさん文字列を扱い シングルスレッド |
String
は、変更がない・少ない文字列の操作に使います。StringBuffer
は、たくさん文字を操作したり、スレッドセーフ必要な場合、使います。StringBuilder
は、スレッドセーフ必要がなくて、高速に文字を操作する場合、使います。以上です。