Episode ini membahas tipe data primitif Java: byte, short, int, long, float, double, char, dan boolean, variabel lokal, field, constant dengan final dan static, operator aritmatika, logika, bitwise, dan ternary, serta boxing, unboxing, wrapper class, dan null-safety dasar.

Semua program pada akhirnya bekerja dengan data. Episode 4 membahas tipe data, variabel, dan operator — bahan baku yang akan kalian gunakan di setiap baris kode Java. Kalian akan mengenal delapan tipe primitif, cara mendeklarasikan variabel dan constant, serta berbagai operator untuk mengolah nilai.
Java adalah bahasa statically typed, artinya tipe setiap variabel sudah ditentukan saat kompilasi. Ini menuntut kalian berpikir tentang tipe data sejak awal. Setelah episode ini, kalian akan memilih tipe yang tepat dan menulis ekspresi yang benar dengan percaya diri.
Java memiliki delapan tipe primitif yang menyimpan nilai langsung, bukan objek:
byte: 8-bit, rentang -128 sampai 127.short: 16-bit, rentang sekitar -32 ribu sampai 32 ribu.int: 32-bit, tipe default untuk bilangan bulat.long: 64-bit untuk bilangan sangat besar, akhiri dengan huruf L.float: 32-bit presisi tunggal, akhiri dengan huruf F.double: 64-bit presisi ganda, default untuk pecahan.char: 16-bit, satu karakter Unicode dalam kutip tunggal.boolean: hanya true atau false.int umur = 30;
long populasi = 8_000_000_000L;
double harga = 19.99;
float diskon = 0.1F;
char inisial = 'A';
boolean aktif = true;Perhatikan literal 8_000_000_000L — underscore mempermudah membaca angka, dan akhiran L menandai tipe long.
Variabel lokal dideklarasikan di dalam method dan hanya hidup selama method berjalan. Field adalah variabel milik class atau objek yang dideklarasikan di tingkat class. Contoh:
public class Akun {
private double saldo; // field
public void setor(double jumlah) {
double biaya = 1000; // variabel lokal
saldo = saldo + jumlah - biaya;
}
}Constant adalah nilai yang tidak bisa diubah setelah ditetapkan, menggunakan keyword final. Jika ditambah static, constant menjadi milik class, bukan instance:
public class Konfigurasi {
public static final int MAX_RETRIES = 3;
public static final String APP_NAME = "AplikasiKu";
}Konfigurasi.MAX_RETRIES diakses tanpa membuat objek karena bersifat static. Convention penulisan constant adalah UPPER_SNAKE_CASE.
Operator aritmatika bekerja pada angka: +, -, *, /, dan % untuk modulus (sisa bagi). Contoh:
int a = 17;
int b = 5;
System.out.println(a + b); // 22
System.out.println(a % b); // 2Operator perbandingan ==, !=, <, >, <=, >= menghasilkan boolean. Operator logika &&, ||, dan ! menggabungkan kondisi:
boolean dewasa = umur >= 17;
boolean punyaKTP = true;
boolean bolehMasuk = dewasa && punyaKTP;Operator bitwise bekerja per-bit pada bilangan bulat: &, |, ^, ~, serta shift <<, >>. Operator ternary adalah bentuk singkat if-else yang menghasilkan nilai:
int nilai = 85;
String status = nilai >= 75 ? "Lulus" : "Tidak Lulus";Ekspresi nilai >= 75 ? "Lulus" : "Tidak Lulus" mengevaluasi kondisi, lalu mengembalikan nilai pertama jika benar dan kedua jika salah.
Setiap tipe primitif punya pasangan wrapper class: Integer, Long, Double, Float, Byte, Short, Character, dan Boolean. Wrapper dibutuhkan ketika data harus menjadi objek, misalnya dalam koleksi generik.
Autoboxing mengubah primitif menjadi wrapper secara otomatis, dan unboxing mengembalikannya. Contoh:
Integer angka = 42; // autoboxing
int nilaiPrimitif = angka; // unboxing
System.out.println(angka + 8);Wrapper class bisa bernilai null, sedangkan primitif tidak. Mengakses method pada wrapper yang null akan memicu NullPointerException. Pemeriksaan null adalah kebiasaan penting:
Integer bonus = null;
if (bonus != null) {
System.out.println(bonus + 100);
} else {
System.out.println("Bonus tidak tersedia");
}Pola di atas adalah dasar null-safety. Episode 7 akan membahas penanganan null yang lebih lengkap melalui exception handling dan Optional.
Episode 4 membangun fondasi pengelolaan data: mengenal delapan tipe primitif, memahami perbedaan variabel lokal, field, dan constant dengan final serta static, menguasai operator aritmatika, logika, bitwise, dan ternary, serta memahami boxing, unboxing, wrapper class, dan null-safety.
Inti yang harus dibawa pulang:
final membuat nilai tetap; static membuat member milik class.null; selalu periksa sebelum memakainya.Di episode 5 selanjutnya kita akan membahas kontrol alur dan struktur data dasar — pernyataan bersyarat if, else, dan switch expression modern, loop for, while, do-while, enhanced for, dan iterator, koleksi dasar array, ArrayList, LinkedList, Set, dan Map, serta pengenalan Stream API untuk iterasi koleksi.