JavaにおけるMutableとImmutableの違いとは?分かりやすく解説!

スポンサーリンク
スポンサーリンク


Javaにおけるmutableとimmutableの主な違いは、mutableは文字列を変更できることを指し、immutableは文字列の変更が不可能であることを指すことである

Javaは、デスクトップ、ウェブ、モバイルアプリケーションの開発に役立つ高水準のプログラミング言語です。

一方、文字列とは、文字の集合のことです。

Javaでは、Stringオブジェクトは不変です。

つまり、文字列は変更できないのです。

したがって、プログラマーが一旦Stringオブジェクトを作成すると、そのデータや状態を変更することはできません。

しかし、新しいStringオブジェクトを作成することは可能です

全体として、mutableは修正できることを指し、immutableは修正や変更が不可能であることを表現しています

スポンサーリンク

JavaにおけるMutableとは

Mutableとは、文字列を変更したり修正したりできることを指します。

文字列を変更することができない場合でも、文字列を変更する方法はいくつかあります。

この作業をアーカイブする一般的な方法は、StringBufferとStringBuilderを使用することです。

上のプログラムでは、sb1がStringBufferのオブジェクトです。

6行目でオブジェクトを表示し、7行目でsb1に別の文字列を追加しています。

8行目でオブジェクトを表示しています。

最初の文字列が変更されていることがわかります。

このように、StringBufferは文字列を変更することができます。

このように、StringBufferはミュータブルです。

同様に、StringBuilderも与えられた文字列を変更します。

StringBufferはスレッドセーフなので、複数のスレッドが同時にStringにアクセスすることはできません。

一方、StringBuilderはスレッドセーフではありません。

したがって、複数のスレッドが同時にStringにアクセスすることができる。

このため、StringBuilderはStringBufferより高速に動作する。

JavaにおけるImmutableとは

Immutableとは、Stringを変更することができないことを指します。

 プログラマーがStringを作成したとき、それを変更することはできない。

以下の例を参照してください。

Main Difference - Mutable vs Immutable in Java 図2: Stringを用いたJavaプログラム

上のプログラムによると、sは参照変数です。

文字列定数プールにある “Hello “という文字列を参照している。

そして、”Hello “は “World “と結合される。

このとき、最初の “Hello “は変化しない。

代わりに「Hello World」という新しいStringが作成されます。

したがって、7行目には “Hello “とだけ表示されます。

これは、Stringを変更することは不可能であることを示しています

つまり、文字列は不変なのです。

JavaにおけるMutableとImmutableの違い

定義

Mutableとは文字列を変更できることを指し、Immutableとは文字列を変更できないことを指します。

クラス

StringBuffer と StringBuilder は mutable であるが、String は immutable です。

結論

Stringとは、文字の集合のことです。

Javaでは、Stringはimmutableです。

一方、StringBufferやStringBuilderを用いると、文字列をMutableにすることができます。

Javaにおけるmutableとimmutableの主な違いは、mutableは文字列を変更できること、immutableは文字列を変更できないことを意味することです。

タイトルとURLをコピーしました