Variabel dan Tipe Data di Java

 

Hai, teman-teman! Kasir Warteg Canggih kita sekarang sudah bisa menyapa. Tapi coba bayangin ada pembeli nanya, "Mas, tempe orek berapa?" Kasirnya diam. Dia cuma tahu cara bilang selamat datang.

Di warteg beneran, kasir hafal harga-harga di kepalanya. Aplikasi kita juga butuh hal yang sama. Dari situ muncul pertanyaan, "Harga ini gimana ya cara nyimpennya? Terus disimpannya di mana?" Jawabannya ada di dua hal yang selalu jalan berdua: variabel dan tipe data di Java.

TL;DR: Variabel adalah tempat menyimpan data di program, yang punya nama, tipe, dan nilai. Tipe data menentukan jenis isinya: int untuk bilangan bulat, double untuk desimal, boolean untuk benar atau salah, char untuk satu karakter, dan String untuk teks. String termasuk objek, yang menyimpan rujukan ke data, bukan nilainya langsung. Untuk uang rupiah, pakai int atau long, bukan double. Nilai yang tidak boleh berubah ditandai dengan final.

Apa Itu Variabel di Java?

Variabel di Java adalah wadah bernama untuk menyimpan data selama program berjalan. Setiap variabel punya tiga bagian: tipe data (jenis wadahnya), nama (labelnya), dan nilai (isinya). Isinya boleh diganti kapan saja, tapi tipenya tetap.

Bayangin etalase warteg. Setiap lauk punya wadahnya sendiri, dan tiap wadah kalau diberi label nama, kasir langsung tahu isinya apa. Variabel kerjanya persis seperti itu.

Di Java, bentuknya seperti ini:

int hargaTempe = 4000;

Kalau dibaca dari kiri:

  • int adalah tipe data, yaitu jenis wadahnya.
  • hargaTempe adalah nama variabel, yaitu labelnya.
  • 4000 adalah nilai, yaitu isinya.

Isi variabel juga bisa diganti kapan saja. Misalnya harga tempe naik:

hargaTempe = 4500;

Perhatikan, saat mengganti isi, tipe datanya tidak ditulis lagi. Tipe cukup ditulis sekali, waktu variabel pertama kali dibuat.

Disimpan di Mana, Sebenarnya?

Variabel disimpan di memori (RAM) komputer selama program berjalan. Begitu program ditutup, isinya ikut hilang.

Buat kasir kita, artinya harga-harga ini masih "hafalan sementara". Setiap kali program dijalankan ulang, harganya diambil lagi dari kode. Nanti di seri ini, kasir akan belajar menyimpan data ke file supaya catatannya tetap ada walau program dimatikan.

Tipe Data di Java yang Paling Sering Dipakai

Tipe data di Java menentukan data seperti apa yang boleh masuk ke sebuah variabel. Untuk kasir warteg, empat tipe primitif ini sudah cukup untuk mulai: int untuk harga, double untuk angka desimal, boolean untuk kondisi benar atau salah, dan char untuk satu karakter.

Kembali ke etalase. Kuah sayur tidak bisa ditaruh di piring datar, dan gorengan tidak cocok ditaruh di mangkok kuah. Tiap wadah punya jenis isi yang pas.

int hargaNasi = 5000;          // bilangan bulat
double beratLauk = 0.25;       // bilangan desimal (kg)
boolean bukaHariIni = true;    // benar atau salah
char ukuranPorsi = 'L';        // satu karakter

Perhatikan, char pakai tanda kutip satu ('L'), bukan kutip dua.

Java sebenarnya punya delapan tipe data primitif. Sisanya jarang dipakai di awal belajar, tapi ini rangkumannya:

Tipe Contoh nilai Kapan dipakai
byte 100 Angka kecil, hemat memori
short 20000 Angka sedang, jarang dipakai
int 5000 Bilangan bulat sehari-hari
long 5000000000L Bilangan bulat yang sangat besar
float 0.25f Desimal, presisi lebih rendah
double 0.25 Desimal sehari-hari
char 'L' Satu karakter
boolean true Benar atau salah

Perhatikan huruf L di belakang 5000000000L. Tanpa huruf itu, Java menganggap angkanya int dan menolak dengan pesan integer number too large. Penjelasan lebih lengkap tiap tipe, termasuk rentang nilainya, ada di Mengenal Tipe Data di Java.

Jebakan: Jangan Pakai double untuk Uang

Ini kelihatannya sepele, tapi sering bikin hitungan meleset. Coba jalankan kode ini:

double a = 0.1;
double b = 0.2;
System.out.println(a + b); // 0.30000000000000004

Hasilnya bukan 0.3 persis. Ini karena double menyimpan angka desimal dalam bentuk biner, dan sebagian angka desimal tidak bisa disimpan dengan tepat. Tutorial resmi Oracle sendiri mengingatkan bahwa float dan double tidak boleh dipakai untuk nilai yang butuh ketepatan, seperti mata uang.

Buat warteg, solusinya gampang: rupiah tidak punya sen, jadi simpan uang pakai int. Nilai maksimal int adalah 2.147.483.647, sekitar 2,1 miliar. Kalau angkanya bisa tembus lebih dari itu, misalnya total omzet setahun, ganti ke long.

String untuk Nama Menu

Harga sudah bisa disimpan, sekarang nama menunya. Untuk teks, Java punya String:

String namaMenu = "Tempe orek";

String pakai tanda kutip dua, dan dia bukan tipe primitif seperti delapan tipe di atas. Masih banyak yang bisa dilakukan dengan String, dan itu akan dibahas di artikel tersendiri.

Sekilas tentang Objek: Bedanya dengan Primitif

String termasuk objek. Lalu, apa bedanya dengan primitif?

Variabel primitif menyimpan nilainya langsung. Di int hargaTempe = 4000;, isi wadahnya memang angka 4000.

Variabel objek beda. Yang disimpan bukan datanya langsung, tapi rujukan ke tempat data itu berada di memori. Ibarat nota pesanan di warteg: di tangan kasir cuma ada nota bertuliskan "rak 2", sedangkan piringnya ada di tempat lain. Karena cuma rujukan, variabel objek juga bisa kosong alias null. Variabel primitif tidak bisa bernilai null.

Kenapa perlu tahu sekarang? Perbedaan inilah yang nanti bikin == pada String bisa menipu, dan itu dibahas di artikel Operator. Soal cara membuat objek sendiri, misalnya objek Menu yang menyimpan nama dan harga sekaligus, itu jatahnya bagian Class dan Object di seri ini.

Aturan Penamaan Variabel di Java

Nama variabel di Java punya aturan wajib dan kebiasaan yang sebaiknya diikuti. Yang wajib: tidak diawali angka, tanpa spasi, bukan kata kunci Java, dan huruf besar kecil dibedakan. Kebiasaannya: pakai camelCase dan pilih nama yang menjelaskan isinya.

  • Tidak boleh diawali angka. 1harga salah, harga1 benar.
  • Tidak boleh pakai spasi. harga tempe salah.
  • Huruf besar dan kecil dibedakan. hargaTempe dan hargatempe dianggap dua variabel yang berbeda.
  • Tidak boleh pakai kata kunci Java, seperti int, class, atau public.
  • Pakai camelCase. Kata pertama huruf kecil, kata berikutnya diawali huruf besar: hargaTempeOrek, bukaHariIni.

Pilih nama yang menjelaskan isinya. hargaTempe jauh lebih mudah dibaca daripada h atau x1. Aturan lengkapnya ada di tutorial Variables dari Oracle.

final untuk Nilai yang Tidak Berubah

Ada data yang memang tidak boleh berubah selama program berjalan, misalnya nama warteg. Untuk itu, tambahkan final:

final String NAMA_WARTEG = "Warteg Canggih";

Kalau nanti ada kode yang mencoba mengubahnya, Java menolak saat compile dengan pesan cannot assign a value to final variable NAMA_WARTEG. Kebiasaan penamaannya juga beda: huruf besar semua, dipisah garis bawah.

Kasir Warteg Versi 2: Punya Menu dan Harga

Sekarang semua digabung. Kasir yang tadinya cuma menyapa, sekarang bisa menampilkan daftar menu beserta harganya. Simpan sebagai WartegCanggih.java, sama seperti di artikel pertama.

public class WartegCanggih {
    public static void main(String[] args) {
        final String NAMA_WARTEG = "Warteg Canggih";

        String menu1 = "Nasi putih";
        int harga1 = 5000;

        String menu2 = "Tempe orek";
        int harga2 = 4000;

        String menu3 = "Es teh";
        int harga3 = 3000;

        boolean bukaHariIni = true;

        System.out.println("Selamat datang di " + NAMA_WARTEG + "!");
        System.out.println("Buka hari ini: " + bukaHariIni);
        System.out.println();
        System.out.println("Daftar menu:");
        System.out.println(menu1 + ": Rp" + harga1);
        System.out.println(menu2 + ": Rp" + harga2);
        System.out.println(menu3 + ": Rp" + harga3);
    }
}

Hasilnya:

Selamat datang di Warteg Canggih!
Buka hari ini: true

Daftar menu:
Nasi putih: Rp5000
Tempe orek: Rp4000
Es teh: Rp3000

Tanda + di dalam println di sini fungsinya menyambung teks dengan isi variabel. Cara kerjanya akan dibahas lebih jauh di artikel tentang operator.

Kalau belum tahu cara menjalankan kode ini, langkahnya ada di Mengenal Java dan Menjalankan Program Java Pertama.

Error Umum Pemula

1. Variabel dipakai sebelum diisi.

int harga;
System.out.println(harga);
error: variable harga might not have been initialized

Variabel di dalam method harus diberi nilai dulu sebelum dipakai.

2. Tipe tidak cocok. int harga = 4000.5; ditolak, karena int tidak bisa menampung desimal:

error: incompatible types: possible lossy conversion from double to int

3. Salah huruf besar atau kecil. Membuat hargaTempe, tapi memanggil hargatempe. Java menganggapnya variabel yang tidak ada dan memunculkan error: cannot find symbol.

4. Kutip yang tertukar. char pakai kutip satu, String pakai kutip dua. char c = "L"; akan error:

error: incompatible types: String cannot be converted to char

Penutup

Sekarang kasir kita sudah punya hafalan: nama warteg, daftar menu, dan harga-harganya. Tapi dia masih belum bisa ngapa-ngapain dengan angka-angka itu.

Coba tambahkan satu menu favoritmu ke program di atas, lengkap dengan harganya, lalu jalankan. Pakai pola yang sama: satu variabel String untuk nama, satu variabel int untuk harga, dan satu baris println baru. Kalau hasilnya muncul di bawah "Es teh", berarti variabelmu sudah benar.

Setelah itu, lanjut ke artikel berikutnya: Operator di Java, tempat kasir ini akhirnya bisa menghitung total belanja. Daftar semua artikel seri ini bisa kamu ikuti di label Warteg Canggih Series.

Kalau mau tahu lebih jauh soal di mana saja sebuah variabel bisa dipakai, bacaan lanjutannya ada di Variabel, Scope, dan Parameter dalam Java.

Menu favorit apa yang kamu tambahkan ke kasirnya? Tulis di kolom komentar, siapa tahu bisa jadi menu tetap Warteg Canggih.

Source code lengkap artikel ini bisa dilihat di GitHub: 02-variabel-dan-tipe-data-di-java

FAQ

Apa itu variabel di Java? Variabel adalah tempat menyimpan data di program. Setiap variabel punya tipe data, nama, dan nilai, dan nilainya bisa diganti selama program berjalan.

Di mana variabel disimpan? Variabel disimpan di memori (RAM) selama program berjalan. Begitu program selesai atau ditutup, isinya hilang.

Kenapa double tidak disarankan untuk menyimpan uang? Karena double menyimpan desimal dalam bentuk biner, sehingga sebagian angka tidak bisa disimpan dengan tepat. Contohnya, 0.1 + 0.2 menghasilkan 0.30000000000000004. Tutorial resmi Oracle juga menyarankan tidak memakainya untuk mata uang. Untuk rupiah, cukup pakai int atau long.

Apa bedanya tipe data primitif dan objek? Variabel primitif seperti int atau char menyimpan nilainya langsung. Variabel objek seperti String menyimpan rujukan ke tempat data berada di memori, dan bisa bernilai null.

Apa fungsi kata kunci final? final membuat variabel tidak bisa diubah setelah diberi nilai. Biasanya dipakai untuk nilai tetap, seperti nama toko, dan ditulis dengan huruf besar semua.

Referensi

Posting Komentar untuk "Variabel dan Tipe Data di Java"