Artikel ini menganalisis perbedaan antara variabel anggota dan variabel lokal di Java beserta contohnya. Bagikan dengan semua orang untuk referensi Anda. Analisis spesifiknya adalah sebagai berikut:
Variabel anggota: Variabel privat yang didefinisikan dalam kelas ini termasuk dalam kelas ini.
Buat dan gunakan variabel anggota untuk menyalin kodenya. Kodenya adalah sebagai berikut: public class Person {
nama string;
Seks Tali;
ke dalam usia;
Tinggi ganda;
public static void main(String terisi[])
{
Orang p=Orang baru();
p.nama="Xiao Huang";
p.Jenis Kelamin="Pria";
hal.umur=20;
p.Tinggi=1,7;
System.out.println("Nama:"+p.nama+",Jenis Kelamin"+p.Jenis Kelamin+",Umur:"+p.usia+",Umur:"+p.Tinggi Badan);
}
}
Proses inisialisasi variabel anggota
1. Inisialisasi kelas
Untuk inisialisasi kelas: Inisialisasi kelas umumnya hanya diinisialisasi satu kali, dan inisialisasi kelas terutama menginisialisasi variabel anggota statis.
Kompilasi suatu kelas menentukan proses inisialisasi kelas tersebut.
File kelas yang dihasilkan oleh kompiler pada dasarnya membuat perubahan berikut pada kelas yang ditentukan dalam file sumber:
1) Pertama-tama deklarasikan variabel anggota di dalam kelas sesuai urutan definisi variabel anggota statis.
2) Inisialisasi sesuai dengan urutan inisialisasi variabel anggota di kelas java asli.
Konversi yang sesuai antara kelas java dan kelas yang dikompilasi adalah sebagai berikut:
Sumber berkas:
Salin kode sebagai berikut: public class Person{
nama String statis publik = "Zhang San";
usia statis publik;
statis{
umur=20;
System.out.println("Umur inisialisasi");
}
alamat String statis publik;
statis{
alamat="Beijing";
umur=34;
}
public static void main(String[] args) {
System.out.println(nama);
System.out.println(umur);
System.out.println(alamat);
}
}
Ketika kode sumber Java diubah menjadi file kelas, kode tersebut diubah menjadi kode seperti berikut:
Salin kode sebagai berikut: public class Person{
nama String statis publik;
usia statis publik;
alamat String statis publik;
statis{
nama="Zhang San";
umur=20;
System.out.println("Umur inisialisasi");
alamat="Beijing";
umur=34;
}
public static void main(String[] args) {
System.out.println(nama);
System.out.println(usia);
System.out.println(alamat);
}
}
Urutan inisialisasi dijalankan secara berurutan sesuai dengan urutan inisialisasi variabel anggota kelas yang bersangkutan setelah konversi, sehingga semua variabel anggota statis dideklarasikan terlebih dahulu dan kemudian ditetapkan, dan urutan penugasan juga didasarkan pada urutan variabel anggota statis berada. diinisialisasi dalam kode sumber. Catatan: Mendefinisikan variabel anggota dan menginisialisasinya secara langsung sama dengan menginisialisasinya dalam blok kode statis, keduanya sesuai urutan yang didefinisikan dalam kode sumber.
variabel lokal
Variabel lokal: Dibuat di badan metode, variabel ini tidak dapat diakses di luar badan metode.
Pembuatan dan penggunaan variabel lokal (variabel lokal harus diberi nilai, variabel anggota tidak boleh diberi nilai)
Salin kode sebagai berikut: public class Person {
public static void main(String terisi[])
{
Nama string="Xiao Huang";
String Jenis Kelamin="Pria";
int umur=20;
tinggi ganda=1,70;
System.out.println("Nama:"+nama+",jenis kelamin"+Jenis Kelamin+",umur:"+umur+",umur:"+Tinggi Badan);
}
}
Lihat contohnya dan salin kodenya sebagai berikut: public class PassTest {
public static void main(String args[]) {
StringBuffer a = stringBuffer baru("a");
StringBuffer b = StringBuffer baru("b");
sebuah(sebuah,b);
Sistem.keluar.println(a);
Sistem.keluar.println(b);
PassTest p = PassTest baru();
komputer();
}
kekosongan statis a(StringBuffer a, StringBuffer b) {
a = a.tambahkan(b);
b = sebuah;
}
}
Menurut cakupan penggunaan variabel lokal, seharusnya hasilnya ab, tapi ternyata outputnya memang ab b.
Ini adalah pertanyaan tentang meneruskan referensi parameter. Jika itu adalah referensi, apa yang diteruskan harus berupa salinan dari referensi yang sama.
b=a dalam metode a mengubah referensi salinan b menjadi =a, tetapi tidak berpengaruh pada b di main.
a = a.append(b); Terutama a.append(b); Kalimat ini mengubah nilai yang ditunjukkan oleh referensi, karena a di main juga menunjuk ke objek yang sama, sehingga outputnya adalah ab b
Jika a = a.append(b); diubah menjadi a = new StringBuffer("ab");
Lihatlah dua program berikut:
Prosedur satu:
Salin kode sebagai berikut: Variabel kelas publik
{
ke dalam aku;
tes batal()
{
ke dalam j=8;
jika(j==i)
System.out.println("Sama");
kalau tidak
System.out.println("Tidak Sama");
}
public static void main(String[] args)
{
Variabel v=Variabel baru();
v.tes();
}
}
Prosedur kedua:
Salin kode sebagai berikut: Variabel kelas publik
{
tes batal()
{
ke dalam aku;
ke dalam j=8;
jika(j==i)
System.out.println("Sama");
kalau tidak
System.out.println("Tidak Sama");
}
public static void main(String[] args)
{
Variabel v=Variabel baru();
v.tes();
}
}
Program pertama normal dan dapat dikompilasi tanpa kesalahan. Ketika program kedua dikompilasi, kesalahan berikut akan muncul:
D:Programjavatest>Variabel javac.java
Variable.java:9: Variabel i mungkin belum diinisialisasi
jika(j==i)
^
kesalahan
Alasan mengapa kesalahan seperti itu terjadi adalah karena: variabel anggota memiliki nilai default (yang diubah oleh final dan bukan statis harus ditetapkan secara eksplisit), dan variabel lokal tidak akan ditetapkan secara otomatis.
Badan kelas dibagi menjadi dua bagian. Variabel yang didefinisikan di bagian definisi variabel disebut variabel anggota kelas, dan variabel yang ditentukan dalam badan metode dan parameter metode disebut variabel lokal.
Perbedaan variabel lokal dan variabel anggota
Variabel lokal mendeskripsikan atribut pada badan metode, sedangkan variabel anggota mendeskripsikan atribut pada objek.
Variabel anggota dapat dimodifikasi oleh pengubah publik, dilindungi, default, pribadi, statis, dan final, sedangkan variabel lokal hanya dapat dimodifikasi oleh pengubah akhir.
Variabel anggota dibuat di heap, dan variabel lokal dibuat di stack.
Variabel lokal memiliki nilai default sistem. Variabel lokal tidak memiliki nilai default sistem dan harus ditetapkan secara manual.
Saya harap artikel ini bermanfaat untuk pemrograman Java semua orang.