Program pada dasarnya memproses data: angka, teks, keadaan benar atau salah. Supaya data tersebut dapat dipakai berulang kali, program membutuhkan wadah bernama — dan wadah itulah yang disebut variabel. Java bersifat statically typed, sehingga setiap variabel harus dinyatakan tipenya sejak awal dan compiler javac akan menolak penempatan nilai yang tidak sesuai. Pada Chapter ini kita mulai dari definisi variabel, lalu berlatih mendeklarasikan, mengisi, dan mengubah nilai variabel lewat contoh yang benar-benar berjalan.
Apa itu Variabel #
Variabel adalah pengenal (identifier) yang menunjuk ke satu lokasi memori tempat nilai disimpan selama program berjalan. Tiga sifat melekat pada setiap variabel: nama untuk merujuk lokasi tersebut, tipe yang menentukan jenis dan ukuran data yang boleh disimpan, serta nilai yang isinya boleh berganti selama program berjalan — asalkan bertipe sama. Ketika JVM mengeksekusi baris int umur = 17;, JVM menyisihkan memori seukuran satu int, mengisinya dengan nilai 17, lalu mencatat bahwa nama umur merujuk ke lokasi memori tersebut.
Karena Java statically typed, deklarasi variabel selalu menyebutkan tipe secara eksplisit:
int umur = 17; // tipe int, nama umur, nilai awal 17
String nama = "Budi"; // tipe String (reference), nama nama
double berat = 62.5; // tipe double, nama beratTiga baris di atas memperlihatkan pola yang sama: tipe nama = nilai;. Setelah variabel dideklarasikan, tipe variabel tersebut terkunci — variabel umur hanya boleh menampung bilangan bulat int hingga program selesai.
Deklarasi, Assignment, dan Reassignment #
Tiga istilah ini sering tercampur aduk, padahal maknanya berbeda:
- Deklarasi: memperkenalkan nama variabel beserta tipenya, misalnya
int stok;. Setelah deklarasi, nama sudah dikenal compiler, tetapi variabel lokal belum berisi nilai yang siap dipakai. - Assignment: mengisi nilai ke variabel dengan operator
=, misalnyastok = 40;. Ekspresi di sisi kanan=dievaluasi lebih dulu, lalu hasilnya disimpan ke lokasi memori milik variabel di sisi kiri. - Reassignment: assignment kedua dan seterusnya — nilai baru menimpa nilai lama, nilai lama hilang diganti. Inilah asal kata variabel: isinya bervariasi.
Variabel dalam Aksi #
Program berikut menyimpan data seorang siswa bernama Budi dalam lima variabel bertipe berbeda, mencetak isinya, lalu mengubah sebagian nilai:
public class BukuSaku {
public static void main(String[] args) {
String nama = "Budi";
int umur = 17;
double tinggi = 168.5;
boolean sudahMakan = false;
char kelas = 'B';
System.out.println("nama = " + nama);
System.out.println("umur = " + umur);
System.out.println("tinggi = " + tinggi);
System.out.println("sudahMakan = " + sudahMakan);
System.out.println("kelas = " + kelas);
umur = umur + 1; // reassignment: nilai lama diganti
tinggi = 169.2; // nilai baru menimpa nilai lama
sudahMakan = true; // boolean boleh dibalik
System.out.println("--- setelah satu tahun ---");
System.out.println("umur = " + umur);
System.out.println("tinggi = " + tinggi);
System.out.println("sudahMakan = " + sudahMakan);
}
}Output yang Dihasilkan:
nama = Budi
umur = 17
tinggi = 168.5
sudahMakan = false
kelas = B
--- setelah satu tahun ---
umur = 18
tinggi = 169.2
sudahMakan = trueMari kita bedah baris-baris pentingnya:
- Baris 3-7 (lima baris deklarasi): masing-masing baris mendeklarasikan sekaligus menginisialisasi satu variabel —
Stringuntuk teks,intuntuk bilangan bulat,doubleuntuk bilangan desimal,booleanuntuk keadaan benar/salah, dancharuntuk satu karakter. - Baris 9-13 (
System.out.println(...)): mencetak isi tiap variabel. Operator+antara string dan variabel menggabungkan nilai variabel ke dalam teks. - Baris 15 (
umur = umur + 1;): reassignment yang membaca nilai lamaumur(17), menjumlahkannya dengan1, lalu menyimpan hasil18kembali keumur. - Baris 16-17 (
tinggi = 169.2;dansudahMakan = true;): nilai baru ditulis langsung menimpa nilai lama — tidak ada operator deklarasi tambahan.
Nilai Baru dihitung dari Nilai Lama #
Kekuatan variabel paling terasa ketika nilai baru dihitung dari nilai yang sudah ada. Simulasikan dompet Budi selama satu hari:
public class TabunganHarian {
public static void main(String[] args) {
int saldo = 50000; // saldo awal Budi
int setorBeli1 = 12000; // jajan es teh
int setorBeli2 = 8000; // jajan roti
saldo = saldo - setorBeli1; // nilai baru dihitung dari nilai lama
System.out.println("Setelah es teh : " + saldo);
saldo = saldo - setorBeli2;
System.out.println("Setelah roti : " + saldo);
int pemasukan = 20000;
saldo = saldo + pemasukan;
System.out.println("Setelah top-up : " + saldo);
}
}Output yang Dihasilkan:
Setelah es teh : 38000
Setelah roti : 30000
Setelah top-up : 50000Tiga baris kunci pada program di atas:
- Baris 3 (
int saldo = 50000;):saldodideklarasikan dan langsung diisi nilai awal — pola yang paling sering kita pakai. - Baris 7 (
saldo = saldo - setorBeli1;): sisi kanan dievaluasi lebih dulu (50000 - 12000 = 38000), hasilnya baru disimpan kesaldo. Dari titik ini, nilai50000sudah tidak dapat dipulihkan darisaldo. - Baris 13 (
saldo = saldo + pemasukan;): pola terhitung dari nilai lama berlanjut; variabelpemasukanyang baru muncul ikut terlibat dalam perhitungan.
Penamaan Variabel #
Compiler menerima nama apa pun yang sah menurut aturan identifier, tetapi pembaca kode adalah manusia. Konvensi Java untuk variabel adalah camelCase: huruf kecil di awal, kata berikutnya diawali huruf kapital — sudahMakan, setorBeli1, saldo. Nama sebaiknya mendeskripsikan data yang disimpan: saldo jauh lebih jelas daripada s atau x. Aturan lengkap identifier dan keyword telah kita bahas pada Chapter Identifier dan Keywords, jadi fokus kita di sini adalah kebiasaan menamai yang baik.
Dengan wadah nilai yang sudah siap dipakai, pertanyaan berikutnya natural: tipe apa saja yang disediakan Java dan seberapa besar data yang muat di masing-masing tipe? Chapter berikutnya membedah delapan primitive data types Java lengkap dengan rentang nilai dan ukuran memorinya.
Referensi #
Berkas Sumber
Berkas pendukung halaman ini dapat diunduh dan dijalankan langsung sesuai penjelasan di atas.
BukuSaku.java
Unduh berkaspublic class BukuSaku {
public static void main(String[] args) {
String nama = "Budi";
int umur = 17;
double tinggi = 168.5;
boolean sudahMakan = false;
char kelas = 'B';
System.out.println("nama = " + nama);
System.out.println("umur = " + umur);
System.out.println("tinggi = " + tinggi);
System.out.println("sudahMakan = " + sudahMakan);
System.out.println("kelas = " + kelas);
umur = umur + 1; // reassignment: nilai lama diganti
tinggi = 169.2; // nilai baru menimpa nilai lama
sudahMakan = true; // boolean boleh dibalik
System.out.println("--- setelah satu tahun ---");
System.out.println("umur = " + umur);
System.out.println("tinggi = " + tinggi);
System.out.println("sudahMakan = " + sudahMakan);
}
}
TabunganHarian.java
Unduh berkaspublic class TabunganHarian {
public static void main(String[] args) {
int saldo = 50000; // saldo awal Budi
int setorBeli1 = 12000; // jajan es teh
int setorBeli2 = 8000; // jajan roti
saldo = saldo - setorBeli1; // nilai baru dihitung dari nilai lama
System.out.println("Setelah es teh : " + saldo);
saldo = saldo - setorBeli2;
System.out.println("Setelah roti : " + saldo);
int pemasukan = 20000;
saldo = saldo + pemasukan;
System.out.println("Setelah top-up : " + saldo);
}
}