可変オブジェクトには変更可能なフィールドがあります。不変オブジェクトには、オブジェクトの作成後に変更できるフィールドがありません。不変オブジェクトは、作成後に状態が変更できないオブジェクトです。 Mutable と Immutable は、Java のオブジェクトの 2 つのカテゴリです。この記事では、Java における可変オブジェクトと不変オブジェクトの違いについて説明します。また、Java の可変クラスと不変クラスの違いを示す Java コード例も示します。
広告 このカテゴリーの人気コース JAVA マスタリー - スペシャライゼーション | 78 コース シリーズ | 15 回の模擬テスト以下は、可変 Java と不変 Java のトップ 6 の違いです:
Java の可変オブジェクトと不変オブジェクトの主な違いは次のとおりです。
可変 Java と不変 Java の主な比較について説明します。
変更可能
Mutable |
Immutable |
Java Mutable object can be modified after its creation. | Java Immutable object cannot be modified after its creation. |
No new object is formed when changes are made to an existing object. | Whenever an existing object is changed, a new object is formed. |
It provides methods to change the content of an object. | It does not provide methods for changing the content of an object. |
Getter and setter methods are present in mutable classes. | Only getter methods are present and not setter methods. |
Mutable classes may or may not be thread-safe. | Immutable classes are thread-safe by default. |
Some common examples of mutable classes in java are StringBuffer, StringBuilder, and java.util.Date. | All Legacy classes, Wrapper classes, String class, are common examples of Immutable classes in java. |
不変
可変 Java と不変 Java の例を以下に示します。
次に、Java での可変クラスと不変クラスの作成を示す Java コード例を見ていきます。
コード:
package com.edubca.mutabledemo; public class MutableDemo { private String studentName; private int rollNumber; MutableDemo (String studentName, int rollNumber) { this.studentName = studentName; this.rollNumber = rollNumber; } public String getStudentName() { return studentName; } // this setter can modify the name public void setStudentName(String studentName) { this.studentName = studentName; } public int getRollNumber() { return rollNumber; } // this setter can modify roll number public void setRollNumber(int rollNumber) { this.rollNumber = rollNumber; } public static void main(String[] args) { MutableDemo obj = new MutableDemo ("John" , 100); System.out.println("Original Name is " + obj.getStudentName()); System.out.println("Original Roll Number is " + obj.getRollNumber()); // update the name, and roll number as is mutable obj.setStudentName("James"); obj.setRollNumber(102); System.out.println("Modified Name is " + obj.getStudentName()); System.out.println("Modified Roll Number is " + obj.getRollNumber()); } }
出力:
上記のコードは、ゲッターとセッターを使用して Java で可変クラスを作成する方法を示しています。
次に、Java で不変クラスを作成する方法を見ていきます。
コード:
package com.edubca.immutabledemo; public final class ImmutableDemo { final String studentName; final int rollNumber; public ImmutableDemo (String studentName, int rollNumber) { this.studentName = studentName; this.rollNumber = rollNumber; } public String getStudentName() { return studentName; } public int getRollNumber() { return rollNumber; } public static void main(String[] args) { ImmutableDemo obj = new ImmutableDemo ("John" , 100); // Since no getters are available contents cannot be modified. // Also as variables are declared final they cannot be modified System.out.println("Name is " + obj.getStudentName()); System.out.println("Roll Number is " + obj.getRollNumber()); } }
出力:
上記のコードは、Java 不変クラスの作成を示しています。不変クラスを作成するときは、次の点に留意する必要があります:
上記の説明から、Java における可変と不変の違いが明確に理解できました。また、可変クラスと不変クラスがどのように作成されるかを示す Java の例も見てきました。不変クラスはデフォルトでスレッドセーフですが、可変クラスはスレッドセーフである場合とそうでない場合があることに注意することが重要です。
以上が可変 Java と不変 Javaの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。