Variabel & Tipe Data
Tipe primitif (int, double, boolean, char, long), String, konstanta final, var, konversi tipe (casting), dan input dari Scanner.
Variabel
Variabel adalah "kotak bernama" untuk menyimpan nilai. Di Java kamu wajib menyebut tipe saat membuatnya:
int umur = 25;
String nama = "Sari";
umur = 26; // nilai boleh diganti
// umur = "dua puluh"; // ERROR: tipe tidak cocok
Pola umum: tipe namaVariabel = nilai;. Variabel yang belum diisi tidak boleh dibaca (compiler akan menolak).
Delapan tipe primitif
| Tipe | Ukuran | Contoh & kegunaan |
|---|---|---|
byte | 8 bit | -128 sampai 127, data mentah |
short | 16 bit | -32.768 sampai 32.767, jarang dipakai |
int | 32 bit | 42, bilangan bulat standar (± 2,1 miliar) |
long | 64 bit | 9_000_000_000L, bilangan bulat besar (akhiran L) |
float | 32 bit | 3.14f, desimal presisi rendah (akhiran f) |
double | 64 bit | 3.14159, desimal standar |
boolean | 1 bit logis | true atau false |
char | 16 bit | 'A', satu karakter, kutip tunggal |
Aturan praktis: pakai int untuk bilangan bulat, double untuk desimal, boolean untuk benar/salah. Untuk uang yang presisi, jangan pakai double; pakai BigDecimal (dibahas di kursus lanjutan).
String bukan primitif
String adalah class (tipe referensi) untuk teks, ditulis dengan kutip ganda. String bersifat immutable: sekali dibuat, isinya tidak berubah; operasi seperti toUpperCase() menghasilkan String baru.
String kota = "Bandung";
System.out.println(kota.length()); // 7
System.out.println(kota.toUpperCase()); // BANDUNG
System.out.println("Halo, " + kota); // penyambungan dengan +
String salam = String.format("Umur %d, tinggi %.1f", 25, 170.55); // Umur 25, tinggi 170.6
Beberapa penentu format: %d bilangan bulat, %f/%.2f desimal, %s teks, %n baris baru.
Text block (Java 15+) untuk teks beberapa baris:
String pesan = """
Halo,
selamat belajar Java!
""";
Konstanta dengan final
final double PPN = 0.11;
// PPN = 0.12; // ERROR: final tidak bisa diubah
Konvensi: nama konstanta HURUF_BESAR dengan garis bawah.
Inferensi tipe dengan var
Sejak Java 10, var membiarkan compiler menebak tipe dari nilai awal. Tipe tetap statis!
var jumlah = 10; // int
var nama = "Dewi"; // String
// jumlah = "sepuluh"; // tetap ERROR
var hanya untuk variabel lokal yang langsung diberi nilai.
Konversi tipe (casting)
- Otomatis (widening) — dari tipe kecil ke besar:
int a = 5; double b = a;→5.0. - Manual (narrowing) — dari besar ke kecil, dengan cast; bisa kehilangan data:
double harga = 19.99; int bulat = (int) harga; // 19 (desimal dibuang, tidak dibulatkan) - String ↔ angka:
int n = Integer.parseInt("123"); double d = Double.parseDouble("3.5"); String s = String.valueOf(42);
Hati-hati: pembagian bilangan bulat
System.out.println(7 / 2); // 3 (int / int = int)
System.out.println(7 / 2.0); // 3.5
System.out.println(7 % 2); // 1 (sisa bagi)
Membaca input dengan Scanner
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("Nama: ");
String nama = in.nextLine();
System.out.print("Umur: ");
int umur = in.nextInt();
System.out.println(nama + " berumur " + umur);
}
}
Pernyataan import ditaruh di atas class untuk memakai class dari package lain.