Variabel dan Tipe Primitif

Mengenal int, double, boolean, char, byte, short, long, float, dan perkenalan pertama dengan String.

Daftar isi

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.

java Contoh: bentuk umum deklarasi variabel
// 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.

TipeUkuranRentangContoh
byte8 bit-128 sampai 127tingkat baterai
short16 bit-32.768 sampai 32.767jumlah kilometer lari
int32 bitsekitar 2,1 miliar negatif dan positifjumlah hadir
long64 bitsekitar 9,2 × 10^18jumlah penduduk
float32 bitpecahan, sekitar 7 digit presisisuhu tubuh
double64 bitpecahan, sekitar 15 digit presisiharga dan rata-rata
char16 bitsatu karakter Unicodenilai huruf
booleantidak ditetapkantrue atau falsestatus lulus

Program berikut mendeklarasikan satu variabel untuk setiap tipe, lalu mencetak seluruhnya.

java TipePrimitif.java
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);
    }
}
text Keluaran
int    : 30
long   : 275000000
double : 31.5
float  : 62.4
boolean: true
char   : A
byte   : 87
short  : 12000

Dua 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.

java PerkenalanString.java
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));
    }
}
text Keluaran
Nama lengkap : Dewi Lestari
Panjang nama : 12
Huruf besar  : DEWI LESTARI
Kata pertama : Dewi

Operator + 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 pesan variable 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 char dan String. Baris char nilai = "A"; ditolak dengan pesan incompatible types: String cannot be converted to char. Kutip tunggal untuk satu karakter, kutip ganda untuk teks.
  • Bilangan terlalu besar untuk int. Literal 3000000000 memicu pesan integer number too large karena melampaui batas 32 bit. Tambahkan akhiran L dan pakai tipe long.
  • Mengandalkan double untuk 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 dalam long berupa satuan terkecil, misalnya sen, atau memakai kelas BigDecimal.

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, dan boolean, dengan int, double, boolean, dan char sebagai pilihan sehari-hari.
  • String adalah 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#