【頻出】JavaのintとIntegerの違いを解説
勉強ちゃん
いろいろ勉強
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 は、スレッドセーフ必要がなくて、高速に文字を操作する場合、使います。以上です。