Setiap variabel, method, class, dan package yang kita buat membutuhkan nama — dan nama tersebut disebut identifier. Java tidak menerima sembarang rangkaian karakter sebagai identifier: ada aturan tegas dari spesifikasi bahasa, dan ada puluhan kata — keywords — yang dicadangkan untuk keperluan bahasa sehingga tidak boleh dipakai sebagai nama. Pada Chapter ini kita pelajari aturan identifier, menguji nama yang sah dan yang ditolak compiler, lalu memetakan daftar lengkap keyword Java.
Aturan Penamaan Identifier #
Spesifikasi Java menetapkan empat aturan sederhana yang berlaku untuk semua identifier:
- Karakter yang boleh dipakai adalah huruf, angka, garis bawah (
_), dan tanda dolar ($). Huruf dari aksara lain sepertiéatau日juga sah karena Java mendukung Unicode. - Angka tidak boleh menempati posisi pertama —
nilai2sah,2nilaitidak. - Identifier tidak boleh sama dengan keyword atau literal yang dicadangkan (
true,false,null). - Java peka terhadap huruf besar-kecil (case-sensitive):
nama,Nama, danNAMAadalah tiga identifier yang berbeda.
Tidak ada batas jumlah karakter yang bermakna, tetapi nama yang baik tetap ringkas dan deskriptif. Aturan di atas hanya menyatakan sah atau tidak sah — soal bagus atau tidaknya nama adalah urusan konvensi, yang kita bahas pada Chapter Aturan Penamaan.
Identifier Sah dalam Praktik #
Program berikut memakai beragam bentuk identifier yang semuanya diterima compiler:
public class IdentifierSah {
public static void main(String[] args) {
int stokBarang = 12; // huruf, kata demi kata
int _sisa = stokBarang - 5; // diawali garis bawah
int nilai2 = 90; // angka boleh, asal bukan di awal
int $diskon = 500; // tanda dolar sah, tetapi jarang dipakai
int Nama = 1; // 'Nama' dan 'nama' adalah dua identifier berbeda
int nama = 2; // Java peka terhadap huruf besar-kecil
System.out.println("stokBarang = " + stokBarang);
System.out.println("_sisa = " + _sisa);
System.out.println("nilai2 = " + nilai2);
System.out.println("$diskon = " + $diskon);
System.out.println("Nama = " + Nama);
System.out.println("nama = " + nama);
}
}Output yang Dihasilkan:
stokBarang = 12
_sisa = 7
nilai2 = 90
$diskon = 500
Nama = 1
nama = 2Mari kita bedah contoh-contohnya:
- Baris 4 (
stokBarang): bentuk paling umum — huruf kecil semua, kata berikutnya diawali huruf kapital tanpa spasi. - Baris 5 (
_sisa): garis bawah sah di posisi mana pun, termasuk di awal. Perhatikan juga expressionstokBarang - 5yang dievaluasi menjadi7sebelum disimpan. - Baris 6-7 (
nilai2dan$diskon): angka di tengah nama sah; tanda dolar pun sah meskipun hampir tidak pernah dipakai karena biasanya dihasilkan generator kode. - Baris 9-10 (
Namadannama): dua variabel hidup berdampingan karena case-sensitive. Kompiler menerimanya, tetapi membedakan nama hanya lewat kapitalisasi seperti ini menyesatkan pembaca — hindari dalam kode nyata.
Identifier yang Ditolak Compiler #
Sekarang kebalikannya: kelima deklarasi berikut melanggar aturan sehingga compiler menolaknya. Blok ini memang tidak dapat dikompilasi — perhatikan penjelasan di bawahnya:
int 2nilai = 90; // angka di posisi pertama
int nama barang = 12; // memuat spasi
int total-belanja = 5; // tanda minus dibaca sebagai operator
int umur! = 17; // tanda seru bukan karakter identifier
int class = 1; // 'class' adalah keywordCompiler javac merespons kelima baris tersebut dengan rangkaian pesan error: not a statement, error: ';' expected, dan error: <identifier> expected — satu pelanggaran kerap memicu beberapa pesan berantai karena parser kehilangan pijakan membaca barisnya. Penyebabnya bermacam-macam: 2nilai diawali angka, nama barang memuat spasi, total-belanja membuat parser membaca total dikurangi belanja, umur! memuat karakter ! yang bukan bagian identifier, dan class adalah keyword yang dicadangkan.
Daftar Keywords Java #
Java memiliki 50 keyword yang tidak boleh dipakai sebagai identifier. Daftar lengkapnya, dikelompokkan agar mudah dihafal:
| Kategori | Keyword |
|---|---|
| Tipe primitif (9) | boolean, byte, char, double, float, int, long, short, void |
| Modifier (12) | abstract, default, final, native, private, protected, public, static, strictfp, synchronized, transient, volatile |
| Deklarasi dan struktur (8) | class, enum, extends, implements, import, interface, package, throws |
| Control flow (14) | break, case, catch, continue, do, else, finally, for, if, return, switch, throw, try, while |
| Objek dan referensi (4) | instanceof, new, super, this |
| Lainnya (1) | assert |
| Dicadangkan tanpa fungsi (2) | const, goto |
Dua keyword terakhir menarik untuk disimak: const dan goto diwariskan dari bahasa C namun tidak pernah diberi fungsi di Java — keduanya tetap dicadangkan agar program lama tidak kehilangan makna kata-kata tersebut.
Di luar tabel, ada beberapa kata yang juga tidak boleh dipakai sebagai nama. Literal true, false, dan null dicadangkan meskipun secara teknis bukan keyword. Garis bawah tunggal _ kini berstatus keyword sejak Java 9 dan dipakai sebagai unnamed variable (JEP 456). Sebaliknya, kata seperti record, sealed, permits, dan yield hanyalah contextual keyword — hanya bermakna khusus di posisi tertentu, dan sah dipakai sebagai nama variabel. Program kecil berikut membuktikannya:
public class UjiKataBaru {
public static void main(String[] args) {
int record = 5;
int yield = 6;
int sealed = 7;
int permits = 8;
System.out.println(record + yield + sealed + permits);
}
}Output yang Dihasilkan:
26Keempat nama tersebut lolos karena pada baris ini tidak ada konteks deklarasi record atau sealed class yang membuat kata-kata itu berperan sebagai keyword.
Kita kini tahu batas keras penamaan: karakter apa saja yang sah dan kata apa saja yang terlarang. Namun di antara jutaan nama yang sah, komunitas Java telah menyepakati gaya penamaan yang membuat kode terasa konsisten di mana pun dibaca. Chapter berikutnya membedah konvensi tersebut: camelCase, PascalCase, UPPER_SNAKE_CASE, dan package lowercase.
Referensi #
- Oracle: Learning the Java Language
- Oracle JDK 25 Documentation
- JEP 456: Unnamed Variables and Patterns
Berkas Sumber
Berkas pendukung halaman ini dapat diunduh dan dijalankan langsung sesuai penjelasan di atas.
IdentifierSah.java
Unduh berkaspublic class IdentifierSah {
public static void main(String[] args) {
int stokBarang = 12; // huruf, kata demi kata
int _sisa = stokBarang - 5; // diawali garis bawah
int nilai2 = 90; // angka boleh, asal bukan di awal
int $diskon = 500; // tanda dolar sah, tetapi jarang dipakai
int Nama = 1; // 'Nama' dan 'nama' adalah dua identifier berbeda
int nama = 2; // Java peka terhadap huruf besar-kecil
System.out.println("stokBarang = " + stokBarang);
System.out.println("_sisa = " + _sisa);
System.out.println("nilai2 = " + nilai2);
System.out.println("$diskon = " + $diskon);
System.out.println("Nama = " + Nama);
System.out.println("nama = " + nama);
}
}
UjiKataBaru.java
Unduh berkaspublic class UjiKataBaru {
public static void main(String[] args) {
int record = 5;
int yield = 6;
int sealed = 7;
int permits = 8;
System.out.println(record + yield + sealed + permits);
}
}