Topik ini memperkenalkan variabel sebagai wadah nilai beserta delapan tipe primitif yang tersedia di Java. Setelah selesai membaca, memilih tipe untuk data tertentu, menulis deklarasinya, dan membedakan char dari String menjadi keputusan yang diambil dengan sadar beserta alasan teknisnya. Kelas String juga ikut diperkenalkan agar teks bisa langsung diolah tanpa menunggu pembahasan kelas.
Variabel dan deklarasinya#
Variabel adalah nama yang merujuk pada satu lokasi memori tempat sebuah nilai disimpan. Setiap variabel di Java memiliki tipe yang tetap sejak dideklarasikan, dan tipe itulah yang menentukan berapa besar memorinya serta operasi apa yang sah dilakukan terhadapnya. Bentuk deklarasinya berupa tipe diikuti nama dan pengisian nilai awal.
// tidak-dijalankan
tipe namaVariabel = nilaiAwal;
int jumlahSiswa = 30;
double suhuRuang = 28.5;Sifat tipe yang tetap ini disebut pengetikan statis (static typing). Kompiler memeriksa kecocokan tipe sebelum program dijalankan, sehingga baris yang menyimpan teks ke dalam variabel int ditolak sejak awal, bukan saat program sedang berjalan. Kekakuan ini terasa mengikat bagi yang berasal dari bahasa dengan pengetikan dinamis, tetapi ia justru menghilangkan sebagian besar kesalahan tipe yang pada bahasa lain baru muncul di hadapan pengguna.
Nama variabel ditulis dengan konvensi camelCase, yakni huruf kecil di awal dan huruf besar pada setiap kata berikutnya, seperti jumlahSiswa. Nama boleh berisi huruf, angka, garis bawah, dan tanda dolar, tetapi tidak boleh dimulai dengan angka. Nama yang deskriptif membuat kode terbaca tanpa penjelasan tambahan, sehingga suhuRuang lebih dipilih daripada s.
Delapan tipe primitif#
Java menyediakan tepat delapan tipe primitif, yaitu tipe bawaan yang nilainya disimpan langsung dan bukan objek. Tabel berikut merangkum ukuran, rentang, dan contoh pemakaiannya.
| Tipe | Ukuran | Rentang | Contoh |
|---|---|---|---|
byte | 8 bit | -128 sampai 127 | tingkat baterai |
short | 16 bit | -32.768 sampai 32.767 | jumlah kilometer lari |
int | 32 bit | sekitar 2,1 miliar negatif dan positif | jumlah hadir |
long | 64 bit | sekitar 9,2 × 10^18 | jumlah penduduk |
float | 32 bit | pecahan, sekitar 7 digit presisi | suhu tubuh |
double | 64 bit | pecahan, sekitar 15 digit presisi | harga dan rata-rata |
char | 16 bit | satu karakter Unicode | nilai huruf |
boolean | tidak ditetapkan | true atau false | status lulus |
Program berikut mendeklarasikan satu variabel untuk setiap tipe, lalu mencetak seluruhnya.
public class TipePrimitif {
public static void main(String[] args) {
int jumlahHadir = 30;
long jumlahPenduduk = 275000000L;
double suhu = 31.5;
float berat = 62.4f;
boolean lulus = true;
char nilaiHuruf = 'A';
byte levelBaterai = 87;
short lariKilometer = 12000;
System.out.println("int : " + jumlahHadir);
System.out.println("long : " + jumlahPenduduk);
System.out.println("double : " + suhu);
System.out.println("float : " + berat);
System.out.println("boolean: " + lulus);
System.out.println("char : " + nilaiHuruf);
System.out.println("byte : " + levelBaterai);
System.out.println("short : " + lariKilometer);
}
}int : 30
long : 275000000
double : 31.5
float : 62.4
boolean: true
char : A
byte : 87
short : 12000Dua detail pada kode di atas menonjol. Literal 275000000L diberi akhiran L agar kompiler menganggapnya nilai long, dan literal 62.4f diberi akhiran f karena angka dengan titik desimal secara bawaan dianggap double. Akhiran-akhiran ini dibedah lebih lanjut pada pembahasan literal.
Memilih tipe sesuai data#
Aturan praktisnya berlapis, dan lapis pertamanya sudah cukup untuk pekerjaan sehari-hari. Gunakan int untuk bilangan bulat pada umumnya, double untuk bilangan pecahan pada umumnya, boolean untuk status yang hanya punya dua keadaan, dan String untuk teks. Empat pilihan ini mencakup sebagian besar kebutuhan program biasa.
Lapis kedua menghadapi kasus khusus. long dipilih saat bilangan bulat bisa melampaui dua miliar, misalnya jumlah penduduk atau waktu dalam milidetik. char dipakai untuk satu karakter semata, misalnya nilai huruf rapor. byte dan short dihemat untuk situasi yang benar-benar membutuhkan ukuran kecil, misalnya jutaan elemen data yang nilainya memang kecil. float hanya dipilih bila memori pecahan menjadi kendala nyata, karena presisi tujuh digitnya mudah kurang untuk perhitungan uang maupun statistik.
String, teks yang bukan primitif#
String adalah tipe untuk teks, dan ia bukan salah satu dari delapan primitif. String adalah sebuah kelas, sehingga variabelnya menyimpan referensi ke objek teks, bukan nilai teks itu sendiri. Literal teks ditulis di antara tanda kutip ganda, berbeda dari char yang memakai tanda kutip tunggal untuk satu karakter.
public class PerkenalanString {
public static void main(String[] args) {
String namaDepan = "Dewi";
String namaBelakang = "Lestari";
String namaLengkap = namaDepan + " " + namaBelakang;
System.out.println("Nama lengkap : " + namaLengkap);
System.out.println("Panjang nama : " + namaLengkap.length());
System.out.println("Huruf besar : " + namaLengkap.toUpperCase());
System.out.println("Kata pertama : " + namaLengkap.substring(0, 4));
}
}Nama lengkap : Dewi Lestari
Panjang nama : 12
Huruf besar : DEWI LESTARI
Kata pertama : DewiOperator + pada String berperan sebagai penyambung, dan inilah satu-satunya tempat operator penjumlahan bekerja pada teks. Metode seperti length(), toUpperCase(), dan substring() dipanggil melalui tanda titik setelah nama variabelnya, pola yang akan makin akrab seiring pemakaian kelas. Kelas String berada di dalam package java.lang, yakni kelompok kelas inti yang tersedia otomatis, sehingga tidak memerlukan pernyataan import.
Kesalahan umum#
- Variabel lokal dipakai sebelum diisi. Deklarasi
int total;tanpa pengisian lalu langsung dicetak memicu pesanvariable total might not have been initialized. Berbeda dari beberapa bahasa lain, Java tidak mengisi variabel lokal dengan nilai bawaan, sehingga pengisian awal wajib dilakukan sebelum variabel dibaca. - Tanda kutip tertukar antara
chardanString. Barischar nilai = "A";ditolak dengan pesanincompatible types: String cannot be converted to char. Kutip tunggal untuk satu karakter, kutip ganda untuk teks. - Bilangan terlalu besar untuk
int. Literal3000000000memicu pesaninteger number too largekarena melampaui batas 32 bit. Tambahkan akhiranLdan pakai tipelong. - Mengandalkan
doubleuntuk uang. Tipe pecahan menyimpan nilai dalam biner, sehingga nilai seperti 0,1 tidak pernah persis dan akumulasi ratusan operasi bisa bergeser. Kasus uang biasanya ditampung dalamlongberupa satuan terkecil, misalnya sen, atau memakai kelasBigDecimal.
Ringkasan#
- Variabel di Java memegang tipe tetap sejak deklarasi, dan kompiler menolak setiap pengisian yang tidak cocok tipenya.
- Delapan tipe primitif tersedia, yaitu
byte,short,int,long,float,double,char, danboolean, denganint,double,boolean, dancharsebagai pilihan sehari-hari. Stringadalah kelas penyimpan teks, bukan primitif, ditulis dengan kutip ganda, dan disambung menggunakan operator+.- Variabel lokal wajib diisi sebelum dibaca, karena Java tidak memberi nilai bawaan pada variabel lokal.
Referensi#
- Primitive Data Types — Oracle — Rujukan resmi delapan tipe primitif beserta ukuran dan rentangnya.
- Class String — Oracle
— Dokumentasi kelas
String, termasuk sifat tak berubah dan metode-metodenya.