JavaのMutableとImmutableの違いは何ですか?



JavaのMutableとImmutableに関するこの記事は、それらの違いに関する包括的なガイドであり、Java文字列が不変である理由についても説明しています。

最も人気のあるJavaの1つ アプリケーションを作成するためのさまざまな概念を提供します。そのような概念の1つは、JavaのMutable AndImmutableです。この概念は、オブジェクトの作成後にフィールドに変更を加えることに依存しているため、プログラミングが容易になります。 。したがって、Javaでの可変および不変に関するこの記事では、次のトピックについて説明します。

ミュータブルオブジェクトとは何ですか?





オブジェクトの作成後にフィールドと状態を変更できるオブジェクトは、可変オブジェクトと呼ばれます。 :java.util.Date、StringBuilderなど。

イミュータブルとは何ですか?



ザ・ オブジェクト オブジェクトが作成されると何も変更できないものは、不変オブジェクトと呼ばれます。 :Integer、Longなどのボックス化されたプリミティブオブジェクト。

では、Javaで何が可変で不変であるかがわかったところで、次に進んで2つの違いを見てみましょう。

可変オブジェクトと不変オブジェクトの違い



Javaの可変オブジェクトと不変オブジェクトの違いについては、次の表を参照してください。

可変 不変
オブジェクトの作成後にフィールドを変更できますオブジェクトの作成後にフィールドを変更することはできません
通常、フィールド値を変更する方法を提供しますフィールド値を変更する方法はありません
GetterメソッドとSetterメソッドがありますゲッターメソッドのみあります
例:StringBuilder、java.util.Date例:文字列、整数、長整数などのボックス化されたプリミティブオブジェクト

可変オブジェクトと不変オブジェクトの違いがわかったので、これらを作成する方法を見てみましょう。 クラス。

ミュータブルクラスを作成するにはどうすればよいですか?

Javaで可変クラスを作成するには、次の要件が満たされていることを確認する必要があります。

  1. 方法を提供する フィールド値を変更するには
  2. ゲッターとセッターの方法

次のコードについて考えてみます。

パッケージedurekaパブリッククラスの例{プライベート文字列コース名example(文字列コース名){this.coursename =コース名} public String getName(){リターンコース名} public void setName(Stringコース名){this.coursename =コース名} public static void main(String [] args){example obj = new example( 'Machine Learning')System.out.println(obj.getName())//名前を更新します。このオブジェクトは変更可能ですobj.setName( 'Machine Learning Masters')System。 out.println(obj.getName())}}

次の出力が表示されます。

可変オブジェクト出力-Javaで可変および不変-Edureka

可変クラスを作成する方法がわかったので、次の記事では、不変クラスを作成する方法を見てみましょう。

不変クラスを作成するにはどうすればよいですか?

Javaで不変クラスを作成するには、次の要件が満たされていることを確認する必要があります。

  1. クラスは次のように宣言する必要があります 最後の 延長できないように。
  2. 直接アクセスが許可されないように、すべてのフィールドをプライベートにする必要があります
  3. セッターメソッドなし
  4. すべての可変フィールドをfinalにして、一度だけ割り当てることができるようにします。
package edureka public class exampleimmutable {private final Stringcoursename exampleimmutable(final Stringcoursename){this.coursename = coursename} public final String getName(){returncoursename} public static void main(String [] args){example obj = new example( '機械学習')System.out.println(obj.getName())}}

以下の出力が表示されます。

さて、可変オブジェクトと不変オブジェクトについて理解したところで、Javaでは文字列は不変であることをお伝えしましょう。さて、Javaで文字列が不変である理由について、これが疑問を投げかけたのではないかと思います。それで、次のこの記事では、同じことを見てみましょう。

Windows用の最高のJavaIDE

Javaで文字列が不変なのはなぜですか?

Javaはの概念を使用します 。したがって、単一のオブジェクトを参照する多くの参照変数がある例を検討すると、1つの参照変数が値を変更したとしても オブジェクト 、自動的に他のすべての参照変数が影響を受けます。また、によると 効果的なJava第4章、73ページ、第2版では、不変クラスを使用する理由は次のとおりです。

  • 不変オブジェクトは単純です
  • これらのオブジェクトは同期を必要とせず、本質的にスレッドセーフです
  • 不変オブジェクトは、他のオブジェクトの優れた構成要素になります

例を挙げて説明する必要がある場合は、

変数があるとしましょう samplestring 、文字列「 機械学習 「。ここで、この文字列を別の文字列と連結すると 「」 マスターズ '、 次に、「 機械学習 」は変更されません。代わりに、「 機械学習マスター 「。以下の画像を参照してください。

上の画像でわかるように、 samplestring 参照変数は「機械学習」を参照しますが、2つのオブジェクトを作成した後でも、他の文字列は参照しません。これで、JavaのMutableとImmutableに関するこの記事は終わりです。私が上で議論したすべての側面について皆さんが明確であることを願っています。

Javaの基本を理解したので、 25万人以上の満足した学習者のネットワークを持つ信頼できるオンライン学習会社であるEdurekaが世界中に広がっています。 EdurekaのJavaJ2EEおよびSOAトレーニングおよび認定コースは、Java開発者になりたい学生および専門家向けに設計されています。このコースは、Javaプログラミングをすぐに開始できるように設計されており、HibernateやSpringなどのさまざまなJavaフレームワークに加えて、コアと高度なJavaの両方の概念についてトレーニングします。

質問がありますか?この「Javaでの可変および不変」ブログのコメントセクションでそれについて言及してください。できるだけ早くご連絡いたします。