Definisi variabel instan dan variabel kelas
Saat mendeklarasikan variabel anggota, variabel yang dimodifikasi dengan kata kunci statis disebut variabel kelas. Variabel kelas disebut juga variabel statis atau variabel statis, sedangkan variabel yang tidak dimodifikasi dengan kata kunci statis disebut variabel instan.
Misalnya:
classMain{floatx;//variabel instan staticinty;//variabel kelas}
Melihat:
Kata kunci static perlu ditempatkan sebelum tipe variabel.
Perbedaan antara variabel instan dan variabel kelas
1. Variabel instan dari objek yang berbeda berbeda satu sama lain:
Sebuah kelas dapat membuat beberapa objek berbeda dengan menggunakan operator baru. Objek-objek ini akan diberi variabel anggota yang berbeda. Variabel instan yang ditugaskan ke objek berbeda menempati ruang memori yang berbeda. Mengubah variabel instan dari satu objek tidak akan mempengaruhi variabel instan lainnya dari objek tersebut.
2. Semua objek berbagi variabel kelas:
Jika ada variabel kelas di dalam kelas, saat menggunakan operator baru untuk membuat beberapa objek berbeda, variabel kelas yang ditetapkan ke objek tersebut menempati memori yang sama. Mengubah variabel kelas dari satu objek akan memengaruhi kelas objek lainnya artinya objek berbagi variabel kelas.
3. Akses langsung variabel kelas melalui nama kelas:
Ketika program Java dijalankan, file bytecode kelas tersebut dimuat ke dalam memori. Jika kelas tidak membuat objek, variabel instan di kelas tersebut tidak akan dialokasikan memori. Namun, variabel kelas di kelas tersebut dialokasikan ruang memori yang sesuai ketika kelas dimuat ke dalam memori. Jika kelas ini membuat objek, maka variabel instan dari objek yang berbeda berbeda satu sama lain, yaitu ruang memori yang berbeda dialokasikan, dan variabel kelas tidak lagi mengalokasikan kembali memori. Semua objek berbagi variabel kelas, yaitu variabel kelas semua objek adalah sama. Ruang memori yang ditempati oleh variabel kelas tidak akan dilepaskan hingga program keluar.
Oleh karena itu, variabel kelas dapat diakses tidak hanya melalui objek tetapi juga secara langsung melalui nama kelas, sedangkan variabel instan suatu objek dapat diakses melalui objek tetapi tidak menggunakan nama kelas.