pengubah akhir:
Variabel anggota akhir yang dimodifikasi harus memiliki nilai awal yang ditentukan secara eksplisit oleh pemrogram.
Bidang kelas: Nilai awal harus ditentukan dalam blok inisialisasi statis atau saat mendeklarasikan Bidang.
Bidang Instance: Bidang harus dideklarasikan dalam blok inisialisasi non-statis atau nilai awal harus ditentukan dalam konstruktor.
variabel lokal akhir: harus diinisialisasi secara eksplisit oleh pemrogram.
Apa perbedaan antara variabel dasar modifikasi akhir dan variabel tipe referensi?
Variabel dasar diubah oleh final: Variabel dasar tidak dapat ditetapkan kembali.
Variabel referensi akhir yang dimodifikasi: Hanya dijamin bahwa alamat yang direferensikan oleh tipe referensi ini tidak akan berubah, yaitu selalu merujuk ke objek yang sama, tetapi objek ini dapat berubah sepenuhnya.
Copy kode kodenya sebagai berikut:
/**
*/
import java.util.*;
Demo kelas publik5
{
public static void main(String[] args)
{
akhir B b = baru B(22);
b.tes();
// Mengubah nilainya secara sah, namun tetap menunjuk ke referensi yang sama
b.setUmur(20);
Sistem.keluar.println(b.getAge());
// ilegal
// b = nol;
b.tes2();
}
}
/**
fianl memodifikasi variabel anggota
*/
kelas A
{
//sah
int akhir a = 10;
//Tentukan nilai awal dalam konstruktor atau blok inisialisasi
string terakhir str;
int terakhir c;
ganda statis akhir d;
{
str = "halo";
//liar
// dan = 100;
}
statis
{
d = 100;
}
// Konstruktor dapat menentukan nilai awal untuk Bidang yang tidak ditentukan di blok inisialisasi
publikA()
{
// ilegal
//str = "ddd";
c = 1000;
}
perubahan ganda publikFinal()
{
// Anda tidak dapat menentukan nilai awal untuk final dalam metode normal
// mengembalikan d = 1000,90;
kembali 0;
}
}
/**
fianl memodifikasi objek array
*/
kelas B
{
usia swasta;
publikB()
{
}
publik B(int usia)
{
this.usia = usia;
}
kekosongan publik setAge(int usia)
{
this.usia = usia;
}
int publik getAge()
{
kembalikan this.age;
}
tes kekosongan publik()
{
int terakhir[] arr={23,434,56,898};
Sistem.keluar.println(Array.toString(arr));
Array.sort(arr);
Sistem.keluar.println(Array.toString(arr));
arr[2] = 200;
Sistem.keluar.println(Array.toString(arr));
//Penugasan ulang Arr berikut ini ilegal
// arr = nol;
}
/**
Memperdalam pemahaman Anda tentang final
*/
tes kekosongan publik2()
{
String str1 = "Masa depan yang lebih baik";
//Referensi langsung ke "Masa Depan yang Lebih Baik" di kumpulan konstan
String str2 = "Cantik"+"Masa Depan";
//BENAR
Sistem.keluar.println(str1 == str2);
String s1 = "Cantik";
String s2 = "Masa Depan";
Tali s3 = s1+s2;
//false s1 s2 hanyalah sebuah variabel yang tidak dapat ditentukan pada waktu kompilasi
//Jika Anda ingin menentukannya pada waktu kompilasi, gunakan final untuk memodifikasi s1 s2
Sistem.keluar.println(str1 == s3);
}
}
Apakah kalian tahu sesuatu tentang pengubah terakhir di Java? Saya yakin sudah dijelaskan dengan jelas di komentar, jadi saya tidak akan membahas detailnya di sini.