Apa Itu Variabel
Variabel adalah kotak bernama yang menyimpan sebuah nilai. Di Java, setiap variabel punya tipe yang tetap, yang ditentukan saat kamu mendeklarasikannya, dan tipe itu tidak pernah berubah. Inilah yang membuat Java bertipe statis: compiler tahu tipe setiap variabel sebelum program berjalan, dan akan menolak meng-compile kode yang memasukkan jenis nilai yang salah ke dalam sebuah kotak.
Deklarasi punya tiga bagian: tipe, nama, dan (biasanya) nilai awal.
Baca int age = 30; sebagai "buat sebuah int bernama age dan masukkan 30 ke dalamnya". Titik koma mengakhiri pernyataan, sama seperti setiap pernyataan lain yang ditunjukkan di halaman komentar.
Deklarasi Sekarang, Isi Nanti
Kamu bisa memisahkan deklarasi dari penugasan pertamanya. Tipenya ditulis sekali, saat deklarasi; setelah itu kamu mengisi nilai cukup dengan nama dan =:
Satu aturan yang sering menjebak pemula: kamu harus mengisi nilai ke variabel lokal sebelum membacanya. Compiler melacak hal ini dan menolak kode yang membaca variabel lokal yang belum diinisialisasi:
int score;
System.out.println(score); // compile error: variable score might not have been initialized
Ini fitur, bukan gangguan: aturan ini menangkap satu jenis bug sekaligus sebelum program sempat dijalankan.
Aturan dan Konvensi Penamaan
Java menegakkan beberapa aturan tegas, lalu menambahkan konvensi di atasnya. Aturannya: nama boleh berisi huruf, angka, _, dan $, tetapi tidak boleh diawali angka, tidak boleh berupa kata kunci yang dicadangkan (seperti int atau class), dan membedakan huruf besar dan kecil (age dan Age adalah dua variabel yang berbeda).
Konvensi yang diikuti semua orang:
- Variabel dan method memakai
camelCase:firstName,totalScore. - Konstanta memakai
UPPER_SNAKE_CASE:MAX_USERS. - Nama sebaiknya menjelaskan nilainya:
count, bukanc;userEmail, bukanx.
Nama yang jelas bukan hiasan, melainkan cara dirimu di masa depan membaca kode. totalPrice = itemCount * pricePerItem langsung bisa dipahami, sesuatu yang tidak akan pernah bisa dicapai t = c * p.
Keamanan Tipe: Kotak Mempertahankan Tipenya
Karena tipenya dikunci saat deklarasi, kamu tidak bisa memasukkan nilai dengan tipe yang salah ke sebuah variabel. Ini menangkap kesalahan saat kompilasi:
int age = 30;
age = "thirty"; // compile error: incompatible types - String cannot become int
Penugasan antar tipe angka mengikuti aturan widening: tipe yang lebih kecil otomatis masuk ke tipe yang lebih besar, tetapi tidak sebaliknya. Kita akan membahasnya lengkap di halaman tipe data dan type casting; untuk sekarang, cukup ketahui bahwa compiler selalu mengawasi.
Kata Kunci var
Sejak Java 10, kamu bisa menulis var sebagai pengganti tipe dan membiarkan compiler menebaknya dari nilai di sebelah kanan:
var bukan tipe dinamis: name tetap String, sama seperti kalau kamu menulis String name, dan kamu tetap tidak bisa mengisinya dengan int nanti. Kata kunci ini hanya menghemat ketikan. Batasannya: var butuh nilai awal untuk ditebak tipenya, jadi var x; tidak sah, dan hanya berlaku untuk variabel lokal, tidak pernah untuk field, parameter method, atau tipe kembalian. Pakai kata kunci ini kalau tipenya sudah jelas dari sisi kanan; tulis tipenya kalau itu membuat kode lebih jelas.
Konstanta dengan final
Kalau sebuah nilai tidak boleh berubah setelah diisi, tandai dengan final. Setiap upaya untuk mengisinya ulang akan menjadi error kompilasi:
final menyampaikan maksudmu ("ini nilai yang tetap") dan membuat compiler menjaganya untukmu. Pakai setiap kali sebuah nilai secara konsep adalah konstanta, seperti tarif, batas, atau key konfigurasi, supaya penugasan ulang yang tidak disengaja tertangkap, bukan diam-diam menjadi bug yang ikut dirilis.
Scope Variabel
Variabel hanya ada di dalam blok, yaitu { ... }, tempat ia dideklarasikan, dan berakhir di kurung kurawal penutupnya. Inilah scope-nya. Variabel yang dideklarasikan di dalam for loop atau blok if tidak terlihat dari luar:
i dan square sama-sama milik loop dan hilang saat loop selesai; total dideklarasikan di blok luar, jadi tetap ada. Pelajaran praktisnya: deklarasikan setiap variabel di blok terkecil yang membutuhkannya. Scope yang sempit berarti lebih sedikit nama yang berebut perhatianmu dan lebih sedikit peluang salah memakai nilai jauh dari tempat nilai itu diisi.
Berikutnya: Tipe Data
Setiap variabel di halaman ini diawali dengan tipe: int, double, String, boolean. Halaman berikutnya membahas tipe data Java secara rinci: delapan tipe primitif, seberapa besar masing-masing, perbedaan tipe primitif dan objek, dan tipe mana yang dipakai untuk kebutuhan apa.
Pertanyaan yang sering diajukan
Bagaimana cara mendeklarasikan variabel di Java?
Tulis tipenya, lalu nama, lalu boleh juga langsung isi nilainya: int age = 30;. Tipenya (int) tetap selama variabel itu hidup; namanya (age) adalah cara kamu merujuknya. Kamu bisa memisahkan deklarasi dari penugasan berikutnya, misalnya int age; age = 30;, tetapi kamu harus mengisi nilai sebelum membaca variabel lokal.
Apa itu kata kunci var di Java?
Sejak Java 10, var membuat compiler menebak tipe variabel lokal dari nilai yang kamu isikan: var name = "Ada"; membuat name bertipe String. Variabel itu tetap bertipe statis, karena tipenya ditetapkan saat kompilasi, bukan dinamis. var hanya berlaku untuk variabel lokal yang punya nilai awal, tidak pernah untuk field, parameter, atau deklarasi tanpa nilai awal.
Bagaimana cara membuat konstanta di Java?
Tambahkan kata kunci final: final double PI = 3.14159;. Setelah diisi, variabel final tidak bisa diisi ulang, dan compiler menolak setiap upaya untuk melakukannya. Menurut konvensi, konstanta ditulis dalam UPPER_SNAKE_CASE supaya menonjol dibanding variabel biasa.