Untuk membedakan antara kedua saudara ini, pertama -tama, kita harus tahu apa mereka. Pertama, ambil variabel anggota.
Variabel anggota
Mari kita pelajari sesuatu:
Atribut: Karakteristik Eksternal; seperti tinggi dan berat manusia
Perilaku: Apa yang dapat Anda lakukan; Misalnya, orang memiliki perilaku seperti berbicara, bermain basket, dll.
Dalam bahasa Java, unit paling dasar adalah kelas, dan kelas digunakan untuk mencerminkan banyak hal.
Hal yang sama berlaku untuk menggambarkan hal -hal dengan kelas kelas:
Atribut: Variabel anggota di kelas yang sesuai
Perilaku: Fungsi Anggota di kelas yang sesuai
Mendefinisikan kelas sebenarnya adalah anggota (variabel anggota dan fungsi anggota) di kelas
Ekspansi: Kelas adalah konsep abstrak, dan suatu objek adalah keberadaan konkret dan perwujudan kelas. Misalnya: Mobil dalam hidup dapat dianggap sebagai kelas, yang kami sebut kelas mobil. Setiap mobil memiliki nomor warna dan ban (dapat didefinisikan sebagai atribut, yaitu variabel anggota), dan setiap mobil dapat berjalan (yaitu, perilaku mobil, sesuai dengan fungsi anggota total kelas). Jika kami membuat instantiate mobil, kami akan menghasilkan objek, seperti Mercedes-Benz dan BMW (BMW).
Demo1:
mobil kelas publik {warna string pribadi; // Tentukan warna mobil, variabel global int private int numluntai; // Tentukan nomor ban mobil, mobil publik variabel global (warna string, int numluntai) {super (); this.color = warna; this.numluntai = numluntai; } public void run () {System.out.println (this.numluntai + "roda" + this.color + "mobil mengemudi di jalan"); }} kelas publik classtest {public static void main (string [] args) {car bmw = mobil baru ("hitam", 4); // Buat objek sedan dengan nama bmw bmw.run (); }}Hasil Menjalankan:
Sedan hitam dengan 4 roda mengemudi di jalan
Di antara mereka, warna dan numluntai disebut variabel anggota kelas mobil. Properti ini dapat digunakan untuk menggambarkan sifat -sifat kelas. Jika tidak, itu harus didefinisikan sebagai variabel lokal.
Misalnya, saya dalam loop untuk variabel lokal.
untuk (int i = 0; i <args.length; i ++) {
......
}
Misalnya, variabel ditulis dalam metode anggota sebagai variabel lokal.
PublicClass Car {Private String Color; // Tentukan warna mobil, variabel global int private int numluntai; // Tentukan nomor ban mobil, mobil publik variabel global (warna string, int numluntai) {super (); this.color = warna; this.numluntai = numluntai; } public void run () {string carname = "bmw"; // Ini adalah variabel lokal System.out.println (this.numluntai + "roda" + this.color + carname + "mobil mengemudi di jalan"); }} publicclass classtest {public static void main (string [] args) {car bmw = mobil baru ("hitam", 4); // Buat objek sedan dengan nama bmw bmw.run (); }}hasil:
Sedan BMW hitam dengan 4 roda mengemudi di jalan
Perbedaan antara variabel anggota dan variabel lokal
Variabel Anggota:
① Variabel anggota didefinisikan di kelas dan dapat diakses di seluruh kelas.
② Variabel anggota ditetapkan dengan pembentukan objek, menghilang dengan menghilangnya objek, dan ada dalam memori heap di mana objek berada.
③ Variabel anggota memiliki nilai inisialisasi default.
Variabel lokal:
① Variabel lokal hanya didefinisikan dalam ruang lingkup lokal, seperti: dalam fungsi, dalam pernyataan, dll., Dan hanya berlaku di area tempat mereka berada.
② Variabel lokal ada dalam memori tumpukan. Ketika ruang lingkup fungsinya berakhir, ruang variabel akan dilepaskan secara otomatis.
③ Variabel lokal tidak memiliki nilai inisialisasi default
Prinsip -prinsip yang perlu diikuti saat menggunakan variabel adalah: Prinsip Proximity
Pertama, cari di ruang lingkup lokal, gunakan jika ada; Kemudian cari di posisi anggota.
Saya mungkin sedikit bingung ketika melihat ini. Izinkan saya memilah contoh di bawah ini. Jika Anda memikirkannya dengan cermat, itu sebenarnya sangat sederhana.
Mari kita lihat kode sederhana terlebih dahulu.
Pertama saya mendefinisikan kelas seseorang.
Public Class Person {private int usia = 1000; // Tentukan variabel anggota, usia adalah 1000 public void setage (int usia) {usia = usia; System.out.println ("Usia dalam metode"+usia); } public void wayshello () {System.out.println ("Usia saya adalah"+usia+"."); }}Kemudian buat objek di fungsi utama dan outputnya.
Orang p = orang baru (); p.setage (20); p.sayhello ();
Apa hasil outputnya? Bukannya kami membayangkan bahwa usia saya adalah 20, tetapi berikut ini:
// Usia dalam metode ini adalah 20 // usia saya adalah 1000.
Sebenarnya mudah dimengerti jika Anda memikirkannya.
Singkatnya, jika ada nama yang berbeda, maka nama variabel dalam metode ini mewakili variabel anggota; Jika ada nama yang sama, maka nama variabel dalam metode ini hanya mewakili variabel lokal, dan tidak memiliki hubungan dengan variabel anggota.
Jadi, pertama, ketika kita membuat objek orang P, variabel anggota telah diinisialisasi saat membuat objek. Nilai awal usia variabel anggota adalah 1000.
Ketika kami p.setage (20), 20 sebenarnya hanya berfungsi dalam metode setage, sehingga usia 20 dalam metode ini adalah output. Setelah menjalankan kalimat ini, 20 dihancurkan.
Kemudian jalankan Sayhello, dan usia di dalamnya mewakili nilai variabel anggota, jadi masih 1000.
Jika Anda masih tidak dapat memahaminya di sini, Anda dapat menulis kode sendiri untuk melihat hasil output dan mengalaminya.
Jadi, ketika nama yang sama digunakan, kami ingin membiarkan nama variabel ini mewakili variabel anggota. Apakah ada cara?
Maka kita harus berbicara tentang kata kunci ini. Kami mengubah kelas orang menjadi ini:
orang kelas publik {private int usia = 1000; public void setage (int usia) {this.age = usia; System.out.println ("Usia dalam Metode"+Usia); } public void wayshello () {System.out.println ("Usia saya adalah"+usia+"."); }}Jalankan kode lagi dan temukan bahwa hasil menjalankan kode menjadi sebagai berikut:
// Usia dalam metode ini adalah 20 // usia saya adalah 20.
Ini mewakili objek saat ini.
Ini.AGE di sini secara khusus menunjukkan bahwa nilai usia objek P (yaitu, variabel anggota usia objek P) adalah 20.
Meskipun esensi dari keduanya adalah variabel, ada perbedaan yang cukup ketika digunakan, dan Anda mungkin jatuh ke dalam perangkap jika Anda tidak hati -hati. Ingat terlebih dahulu: di kelas, jika suatu variabel dapat digunakan untuk menggambarkan sifat -sifat kelas, itu didefinisikan sebagai variabel anggota, jika tidak, itu harus didefinisikan sebagai variabel lokal. Jika Anda tidak dapat mengerti, tulis lebih banyak kode dan Anda dapat memahaminya.