Kata kunci "akhir" dalam Java boleh digunakan untuk mentakrifkan nilai malar dan menghalang pembolehubah, kaedah atau kelas daripada diubah atau ditindih. Kebolehubahan, sebaliknya, menerangkan ciri objek yang kekal dalam keadaan malar sepanjang kewujudannya. Sebaik sahaja objek terbentuk, nilainya tidak berubah.
Pembolehubah, kaedah dan kelas dihadkan oleh kata kunci "akhir", tetapi kebolehubahan melangkah lebih jauh dan memastikan keseluruhan keadaan objek dipelihara.
Mari kita fahami perbezaan utama antara muktamad dan tidak berubah dalam artikel ini.
Kata kunci terakhir dalam Java mempunyai beberapa ciri:
Pembolehubah akhir: Nilai awalnya tidak boleh diubah suai selepas permulaan. Ia sering digunakan untuk mengisytiharkan nilai yang tidak boleh diubah atau tidak berubah.
Kaedah akhir: Mereka tidak boleh diubah suai oleh subkelas, memastikan mereka berkelakuan secara konsisten. Mereka membantu mengekalkan keberkesanan prosedur penting.
Kelas akhir: Mereka tidak boleh dilanjutkan oleh kelas lain dan pelaksanaannya dijamin tidak akan diubah. Kelas akhir sering digunakan untuk membina kelas keselamatan atau utiliti.
Inisialisasi: Untuk memastikan pembolehubah akhir mempunyai nilai yang diketahui, ia mesti diberikan nilai semasa pengisytiharan atau dalam pembina.
Prestasi: Penggunaan akhir membolehkan pengkompil mengoptimumkan kod dengan lebih berjaya, yang berpotensi meningkatkan prestasi.
Keselamatan: Akhir meningkatkan keselamatan program Java dengan menghalang perubahan yang tidak dibenarkan kepada data atau gelagat sensitif.
Di Java, kelas tidak boleh diubah ialah kelas yang kandungan objeknya tidak boleh diubah setelah dicipta. Untuk mencipta kelas tidak berubah, ikut keperluan ini:
Isytihar kelas sebagai Akhir untuk mengelakkan pewarisan.
Isytiharkan ahli data kelas sebagai peribadi untuk menyekat akses langsung.
Isytihar ahli data sebagai muktamad untuk mengelakkan pengubahsuaian selepas objek dibuat.
Gunakan pembina berparameter untuk memulakan semua medan melalui salinan dalam, menghalang pengubahsuaian melalui rujukan objek.
Kembalikan salinan (salinan dalam) objek dalam kaedah getter dan bukannya rujukan objek sebenar untuk mengekalkan kebolehubahannya.
Dengan mengikut ciri-ciri ini, anda boleh mencipta kelas tidak berubah anda sendiri di Java, serupa dengan kelas tidak berubah terbina dalam seperti Integer, Boolean, Byte, Short dan String.
Mengenai pengaturcaraan Java, adalah penting untuk memahami perbezaan antara "akhir" dan "tidak berubah".
Akhir: Simpan rujukan objek dan benarkan mutasi keadaan
Mari kita mulakan dengan "Akhir". Apabila objek atau pembolehubah ditanda muktamad dalam Java, ini bermakna rujukan tidak boleh ditukar untuk menunjuk ke objek atau pembolehubah lain selepas memberikannya nilai. Adalah penting untuk diingat bahawa walaupun rujukan telah ditetapkan, menggunakan kaedah penetap yang berkaitan masih membenarkan anda menukar keadaan objek. Jadi, walaupun rujukan itu sendiri tidak boleh diubah, anda masih boleh menggunakan kaedah yang boleh diakses untuk menukar sifat atau sifat dalaman objek. Dalam erti kata lain, muktamad memastikan kestabilan rujukan objek sambil membenarkan perubahan kepada keadaan dalamannya.
Kekal: Nilai Kekal dan Fleksibiliti Rujukan
Sekarang mari kita alihkan perhatian kita kepada "tidak berubah". Di Jawa, kebolehubahan bermaksud nilai sebenar sesuatu objek tidak boleh diubah selepas ia dicipta. Walau bagaimanapun, tidak seperti Final, anda boleh mengubah suai rujukan itu sendiri dan menetapkannya kepada objek atau pembolehubah lain. Ini bermakna walaupun nilai objek kekal sama, anda boleh menukar rujukannya untuk menunjuk kepada contoh yang berbeza.
Aplikasi dan skop: Akhir dan kebolehubah
Pengubah suai "akhir" digunakan pada pembolehubah dalam Java dan bukan pada objek. Ia menekankan sekatan ke atas menukar rujukan atau pembolehubah sambil membenarkan pengubahsuaian keadaan objek. Ketidakbolehubah, sebaliknya, digunakan pada objek, menunjukkan bahawa nilainya tidak boleh diubah setelah dibuat. Adalah penting untuk memahami perbezaan antara kedua-dua konsep ini untuk memastikan program Java berkelakuan seperti yang diharapkan.
Maksud: Alamat objek dan kebolehubahan keadaan
Apabila kami mengisytiharkan objek atau pembolehubah sebagai muktamad, kami memaksa alamatnya kekal. Dalam erti kata lain, rujukan kekal tetap, menghalang sebarang perubahan pada lokasi yang dituju. Sebaliknya, kebolehubahan menekankan bahawa sebaik sahaja objek dicipta, keadaannya tidak boleh diubah suai. Ini bermakna bahawa nilai dalaman objek tidak boleh diubah, dengan itu mengekalkan integriti dan konsistensinya sepanjang pelaksanaan program.
Kod ini menunjukkan perbezaan antara kata kunci "akhir" dan kebolehubah dalam Java. Kata kunci "akhir" menjadikan pemalar pembolehubah dan menghalang penugasan semula, manakala ketidakbolehubah bermaksud objek itu sendiri tidak boleh diubah suai.
Langkah 1: Isytiharkan pembolehubah "sb" sebagai objek StringBuffer akhir dengan nilai awal "Hello".
Langkah 2: Gunakan kaedah append() untuk menambahkan "TP" pada objek StringBuffer yang dirujuk oleh "sb".
Langkah 3: Cetak nilai kemas kini "sb", iaitu "HelloTP".
Langkah 4: Cuba untuk menetapkan semula objek StringBuffer baharu kepada pembolehubah "sb", yang mengakibatkan ralat masa kompilasi.
Langkah 5: Cetak nilai "sb", tetapi disebabkan ralat pada langkah sebelumnya, baris ini tidak akan dilaksanakan.
// Java program to illustrate difference between final and immutability public class Tutorialspoint { public static void main(String[] args) { final StringBuffer sb = new StringBuffer("Hello"); // We can make changes even though reference variable sb is final sb.append("TP"); System.out.println(sb); // Compile time error will appear here. This is because the final variable cannot be reassigned sb = new StringBuffer("Hello World"); System.out.println(sb); } }
Tutorialspoint.java:16: error: cannot assign a value to final variable sb sb = new StringBuffer("Hello World"); ^ 1 error
Untuk meringkaskan, "muktamad" dan kebolehubahan mempunyai ciri yang sangat berbeza di Jawa. Kata kunci "akhir" mengehadkan pengagihan semula rujukan objek tetapi membenarkan pengubahsuaian keadaan objek.
Sebaliknya, kebolehubahan menghalang nilai objek daripada diubah, tetapi membenarkan rujukan ditetapkan semula. Memahami aplikasi dan skop "akhir" dan kebolehubah adalah penting untuk mereka bentuk program Java yang boleh dipercayai. Apabila objek atau pembolehubah diisytiharkan muktamad, alamatnya kekal tetap, manakala kebolehubahan memastikan bahawa nilai dalaman objek tidak boleh diubah suai. Kod sampel menunjukkan perbezaan, di mana "akhir" menghalang pengagihan semula, menyebabkan ralat masa kompilasi.
Atas ialah kandungan terperinci Perbandingan Akhir vs Keabadian di Jawa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!