Rumah  >  Artikel  >  Java  >  Boleh Berubah vs Java Tidak Boleh Berubah

Boleh Berubah vs Java Tidak Boleh Berubah

WBOY
WBOYasal
2024-08-30 15:41:09360semak imbas

Objek boleh ubah mempunyai medan yang boleh diubah suai; objek tidak berubah tidak mempunyai medan yang boleh diubah selepas objek dicipta. Objek tidak berubah ialah objek yang keadaannya tidak boleh berubah selepas ia dicipta. Mutable dan Immutable ialah dua kategori objek dalam java. Dalam artikel ini, kita akan melihat perbezaan antara objek boleh ubah dan tidak boleh ubah dalam java. Selain itu, kita akan melihat contoh kod java yang menunjukkan perbezaan antara kelas boleh ubah dan tidak boleh ubah dalam java.

IKLAN Kursus Popular dalam kategori ini JAVA MASTERY - Pengkhususan | 78 Siri Kursus | 15 Ujian Olok-olok

Perbandingan Head to Head antara Mutable vs Immutable Java (Infografik)

Di bawah ialah 6 perbezaan teratas antara Mutable vs Immutable Java:

Boleh Berubah vs Java Tidak Boleh Berubah

Perbezaan Utama antara Mutable vs Immutable Java

Berikut ialah perbezaan utama antara objek boleh ubah dan tidak boleh ubah dalam Java:

  • Objek boleh ubah ialah objek di mana kita boleh membuat perubahan pada keadaan objek tanpa mencipta objek baharu. Iaitu, objek boleh ubah boleh diubah suai selepas penciptaannya. Dalam kes objek tidak berubah, apabila keadaan objek diubah, kita mendapat objek baharu. Semasa berurusan dengan objek tidak berubah, kami tidak dibenarkan menukar keadaan objek selepas penciptaannya.
  • Objek boleh ubah, dalam kes umum, menyediakan kaedah yang membolehkan kandungan objek ditukar, manakala objek tidak berubah tidak menyediakan sebarang kaedah untuk menukar kandungannya.
  • Dalam kelas java boleh ubah, kaedah getter dan setter ada, manakala, dalam kelas tidak boleh ubah, hanya kaedah getter tersedia dan bukan kaedah setter.
  • Kelas boleh ubah mungkin selamat untuk benang atau mungkin tidak, manakala kelas tidak berubah secara lalai selamat untuk benang.
  • Contoh kelas boleh ubah dalam java ialah java.util.Date, StringBuffer, StringBuilder, dsb., manakala kelas warisan java, kelas pembalut, kelas String ialah contoh kelas tidak berubah dalam java.

Jadual Perbandingan Java Boleh Ubah vs Tidak Boleh Ubah

Mari kita bincangkan perbandingan teratas antara Mutable vs Immutable Java:

 Mutable

 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.

Tidak boleh diubah

Objek Java Mutable boleh diubah suai selepas penciptaannya. Objek Java Immutable tidak boleh diubah suai selepas penciptaannya.
Tiada objek baharu terbentuk apabila perubahan dibuat pada objek sedia ada. Setiap kali objek sedia ada ditukar, objek baharu terbentuk.
Ia menyediakan kaedah untuk menukar kandungan objek. Ia tidak menyediakan kaedah untuk menukar kandungan objek.
Kaedah getter dan setter hadir dalam kelas boleh ubah. Hanya kaedah pengambil yang ada dan bukan kaedah penetap.
Kelas boleh ubah mungkin atau mungkin tidak selamat untuk benang. Kelas tidak boleh diubah adalah selamat untuk benang secara lalai.
Beberapa contoh biasa kelas boleh ubah dalam java ialah StringBuffer, StringBuilder dan java.util.Date. Semua kelas Legacy, kelas Wrapper, kelas String, ialah contoh biasa kelas Immutable dalam java.

Java Boleh Berubah dan Tidak Berubah dengan Contoh

Java Boleh Ubah dan Tidak Boleh Ubah dengan Contoh diberikan di bawah:

Contoh #1 – Kelas Boleh Berubah dalam Java

Kini kita akan melihat contoh kod java yang menunjukkan penciptaan kelas boleh ubah dan tidak boleh ubah dalam java.

Kod:

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());
}
}

Output:

Boleh Berubah vs Java Tidak Boleh Berubah

Kod di atas menunjukkan penciptaan kelas boleh ubah dalam java dengan getter dan setter.

Contoh #2 – Kelas Kekal dalam Java

Sekarang kita akan melihat bagaimana kita boleh mencipta kelas tidak berubah dalam Java.

Kod:

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());
}
}

Output:

Boleh Berubah vs Java Tidak Boleh Berubah

Kod di atas menunjukkan penciptaan kelas immutable java. Perkara berikut perlu diingat semasa membuat kelas tidak berubah:

  • Kelas yang tidak boleh diubah mestilah muktamad kerana ia tidak sepatutnya diwarisi.
  • Semua medan kelas tidak boleh diubah hendaklah dibuat muktamad.
  • Jika mana-mana objek boleh ubah digunakan sebagai medan dalam kelas tidak berubah, maka pengendalian khas perlu dilaksanakan untuk mengelakkan kandungannya daripada diubah suai.
  • Pembina awam perlu hadir.
  • Kaedah getter untuk semua pembolehubah harus ditakrifkan.
  • Kaedah penetap tidak boleh ada untuk sebarang pembolehubah.

Kesimpulan

Daripada perbincangan di atas, kami memahami dengan jelas perbezaan antara boleh ubah dan tidak berubah dalam java. Selain itu, kami telah melihat contoh java yang menunjukkan cara kelas boleh ubah dan tidak berubah dicipta. Adalah penting untuk ambil perhatian bahawa kelas yang tidak boleh diubah adalah selamat untuk benang lalai, manakala kelas yang boleh diubah mungkin atau mungkin tidak selamat untuk benang.

Atas ialah kandungan terperinci Boleh Berubah vs Java Tidak Boleh Berubah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Rentetan Boleh Berubah di JawaArtikel seterusnya:Rentetan Boleh Berubah di Jawa