Java Static Dijelaskan: Variabel, Metode, dan Blok dengan Contoh Praktis
Di Java, kata kunci static muncul dalam tiga konteks yang berbeda: variabel statis, metode statis, dan blok statis. Setiap satu memainkan peran unik dalam siklus hidup kelas dan instance-nya.
Variabel Statis di Java
Variabel statis adalah bidang tingkat kelas yang diinisialisasi hanya sekali saat kelas pertama kali dimuat. Berbeda dengan variabel instance, satu salinan variabel statis dibagikan oleh semua objek dari kelas tersebut.
- Hanya satu salinan yang ada, dibagikan di semua instance.
- Dapat diakses langsung melalui
NamaKelas.namaVariabel tanpa membuat objek. - Diinisialisasi sebelum bidang instance apa pun diatur.
Sintaks:
public static int count;
Metode Statis di Java
Metode statis milik kelas, bukan instance tertentu. Mereka dapat dipanggil tanpa membuat objek dan hanya dapat mengakses data statis.
- Dapat memanggil metode statis lain, tetapi tidak dapat memanggil metode instance.
- Diimbau dengan
NamaKelas.namaMetode(). - Tidak dapat menggunakan
this atau super karena mereka tidak terikat pada instance.
Semua metode main statis sehingga JVM dapat meluncurkan aplikasi sebelum ada objek yang ada.
Contoh Praktis: Menggunakan Variabel dan Metode Statis
Berikut adalah program sederhana yang menunjukkan bagaimana counter statis dibagikan di beberapa objek Student.
public class Demo { public static void main(String[] args) { Student s1 = new Student(); s1.showData(); Student s2 = new Student(); s2.showData(); // Student.b++; // buka komentar untuk mengubah counter // s1.showData(); } } class Student { int a; // variabel instance, default 0 static int b; // counter statis, diinisialisasi 0 sekali Student() { b++; // tambah counter setiap kali Student dibuat } public void showData() { System.out.println("Nilai a = " + a); System.out.println("Nilai b = " + b); } }
Kompilasi dan jalankan dengan java Demo untuk melihat keluaran berikut:
Diagram di bawah ini mengilustrasikan bagaimana variabel referensi dan objek dibuat, dan bagaimana variabel statis b dibagikan di seluruh instance.
Untuk mengakses variabel statis dari luar kelas, gunakan NamaKelas.namaVariabel:
Student.b++; // menambah counter yang dibagikan s1.showData(); // akan menunjukkan nilai b yang diperbarui
Mencoba mengakses variabel instance dari konteks statis menghasilkan kesalahan kompilasi:
error: variabel non-statis a tidak dapat direferensikan dari konteks statis a++;
Hal ini terjadi karena metode statis tidak dapat secara langsung berinteraksi dengan bidang instance.
Blok Statis di Java
Blok statis adalah blok kode khusus yang dieksekusi sekali saat kelas pertama kali dimuat ke JVM. Ini ideal untuk menginisialisasi bidang statis yang membutuhkan lebih dari sekadar penugasan sederhana.
class Test { static int a; static int b; static { a = 10; b = 20; } }
Menjalankan program berikut menunjukkan keluaran dari blok statis:
public class Demo { static int a; static int b; static { a = 10; b = 20; } public static void main(String[] args) { System.out.println("Nilai a = " + a); System.out.println("Nilai b = " + b); } }
Keluaran:
Nilai a = 10 Nilai b = 20