☀️Siang
Python

☕ Java untuk Pemula: Panduan Lengkap

Tutorial lengkap belajar Java dari nol — instalasi JDK, variabel, tipe data, OOP, inheritance, interface, exception handling, dan quiz interaktif dengan contoh kode praktis

Artikel: Java Pemula Artikel: Java Pemula


1. Pengenalan Java

Java adalah bahasa pemrograman berorientasi objek yang dikembangkan oleh James Gosling di Sun Microsystems dan pertama kali dirilis pada tahun 1995. Java menggunakan prinsip "Write Once, Run Anywhere" (WORA), artinya kode Java bisa dijalankan di semua platform yang mendukung Java Virtual Machine (JVM).

Java digunakan secara luas dalam pengembangan aplikasi enterprise, Android mobile, big data, sistem embedded, dan masih banyak lagi. Hingga saat ini, Java tetap menjadi salah satu bahasa pemrograman paling populer di dunia.

Mengapa Memilih Java?

Keunggulan Penjelasan
Platform IndependentBisa dijalankan di mana saja selama ada JVM
Object-OrientedMendukung OOP sepenuhnya — encapsulation, inheritance, polymorphism
Multi-ThreadingBisa menjalankan banyak proses secara paralel
KeamananFitur keamanan bawaan seperti sandbox dan bytecode verifier
Stabil & MatureSudah 30+ tahun, digunakan oleh jutaan perusahaan di seluruh dunia
Ekosistem BesarSpring, Hibernate, Maven, Gradle, Android SDK, dan banyak lagi

Java vs Bahasa Lain

Aspek Java Python C++
TipeCompiled + InterpretedInterpretedCompiled
TypingStaticDynamicStatic
Sintaks🟡 Sedang-Verbose🟢 Sangat Mudah🔴 Kompleks
Kecepatan🟢 Cepat🟡 Sedang🟢 Sangat Cepat
Cocok untukEnterprise, AndroidAI, Data, OtomasiSystem, Game
Diagram: Cara Kerja Java (Compile + Interpret)
Diagram: CARA KERJA JAVA

JVM (Java Virtual Machine)

.java Source

Windows

Linux



2. Instalasi JDK dan IDE

Untuk mulai memprogram Java, kamu perlu menginstal JDK (Java Development Kit) dan sebuah IDE (Integrated Development Environment).

Instalasi JDK di Windows

Diagram: Hierarchy Inheritance

Hewan

Kucing

warnaBulu

bermain

extends

▼ ▼

Anjing

terlatih

gonggong



8. Interface dan Abstract Class

Interface adalah kontrak yang mendefinisikan method-method yang HARUS diimplementasikan oleh class yang menggunakannya. Abstract class adalah class yang tidak bisa diinstansiasi langsung dan bisa memiliki method abstrak (tanpa body) dan konkret.

Java — Interface
// Interface — kontrak yang harus dipenuhi
public interface DapatBergerak {
    void bergerak();            // method abstrak (default)
    default void berhenti() {   // method default (Java 8+)
        System.out.println("Berhenti bergerak.");
    }
}

public interface DapatBerenang {
    void berenang();
}

// Class yang mengimplementasi interface
public class Orang implements DapatBergerak, DapatBerenang {
    private String nama;

    public Orang(String nama) {
        this.nama = nama;
    }

    @Override
    public void bergerak() {
        System.out.println(nama + " berjalan kaki.");
    }

    @Override
    public void berenang() {
        System.out.println(nama + " sedang berenang di kolam.");
    }
}

public class Ikan implements DapatBerenang {
    private String nama;

    public Ikan(String nama) {
        this.nama = nama;
    }

    @Override
    public void berenang() {
        System.out.println(nama + " berenang di laut.");
    }
}

Abstract Class

Java — Abstract Class
// Abstract class — tidak bisa diinstansiasi langsung
public abstract class BangunDatar {
    protected String nama;

    public BangunDatar(String nama) {
        this.nama = nama;
    }

    // Method abstrak — HARUS diimplementasi oleh subclass
    public abstract double hitungLuas();
    public abstract double hitungKeliling();

    // Method konkret — bisa langsung dipakai
    public void tampilkanInfo() {
        System.out.println("Bangun: " + nama);
        System.out.println("Luas: " + hitungLuas());
        System.out.println("Keliling: " + hitungKeliling());
    }
}

public class Lingkaran extends BangunDatar {
    private double jariJari;

    public Lingkaran(double jariJari) {
        super("Lingkaran");
        this.jariJari = jariJari;
    }

    @Override
    public double hitungLuas() {
        return Math.PI * jariJari * jariJari;
    }

    @Override
    public double hitungKeliling() {
        return 2 * Math.PI * jariJari;
    }
}

public class PersegiPanjang extends BangunDatar {
    private double panjang, lebar;

    public PersegiPanjang(double panjang, double lebar) {
        super("Persegi Panjang");
        this.panjang = panjang;
        this.lebar = lebar;
    }

    @Override
    public double hitungLuas() {
        return panjang * lebar;
    }

    @Override
    public double hitungKeliling() {
        return 2 * (panjang + lebar);
    }
}

// Main
public class MainBangun {
    public static void main(String[] args) {
        // Polymorphism dengan abstract class
        BangunDatar[] bangun = {
            new Lingkaran(7),
            new PersegiPanjang(10, 5)
        };

        for (BangunDatar b : bangun) {
            b.tampilkanInfo();
            System.out.println("---");
        }
    }
}
💡 Interface vs Abstract Class

Interface = kontrak murni, semua method abstrak (kecuali default), bisa multiple inheritance. Abstract class = bisa punya atribut, method konkret, constructor, dan hanya single inheritance. Gunakan interface untuk kemampuan (capability), abstract class untuk hierarki.



9. Exception Handling

Exception adalah error yang terjadi saat runtime. Java menggunakan try-catch-finally untuk menangani exception secara elegan tanpa membuat program crash.

Java — Exception Handling
public class ExceptionDemo {
    public static void main(String[] args) {
        // ===== TRY-CATCH DASAR =====
        try {
            int hasil = 10 / 0;  // ArithmeticException!
            System.out.println("Hasil: " + hasil);
        } catch (ArithmeticException e) {
            System.out.println("Error: " + e.getMessage());
        }

        // ===== MULTIPLE CATCH =====
        try {
            int[] arr = {1, 2, 3};
            System.out.println(arr[10]);  // IndexError!
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("Index di luar batas!");
        } catch (Exception e) {
            System.out.println("Error umum: " + e.getMessage());
        } finally {
            System.out.println("Blok finally selalu dijalankan!");
        }

        // ===== CONTOH DENGAN INPUT =====
        try {
            String teks = "abc";
            int angka = Integer.parseInt(teks);  // NumberFormatException!
        } catch (NumberFormatException e) {
            System.out.println("'abc' bukan angka yang valid!");
        }

        // ===== CUSTOM EXCEPTION =====
        try {
            tarikTunai(100000, 150000);
        } catch (SaldoTidakCukupException e) {
            System.out.println("Error: " + e.getMessage());
            System.out.println("Kurang: Rp " + e.getKekurangan());
        }
    }

    // Method yang melempar exception (throws)
    public static void tarikTunai(int saldo, int jumlah)
            throws SaldoTidakCukupException {
        if (jumlah > saldo) {
            throw new SaldoTidakCukupException(saldo, jumlah);
        }
        System.out.println("Penarikan berhasil. Sisa: Rp " + (saldo - jumlah));
    }
}

// Custom Exception Class
public class SaldoTidakCukupException extends Exception {
    private int saldo;
    private int jumlah;

    public SaldoTidakCukupException(int saldo, int jumlah) {
        super("Saldo Rp " + saldo + " kurang dari Rp " + jumlah);
        this.saldo = saldo;
        this.jumlah = jumlah;
    }

    public int getKekurangan() {
        return jumlah - saldo;
    }
}

Hierarchy Exception di Java

flowchart TD
    N0["Throwable + getMessage(") + printStackTrace(")"]
    N1["Error (fatal, jangan catch) StackOver flow OutO..."]
    N2["Exception (bisa ditangani dengan catch)"]
    N3["Checked (wajib handle) - IO - SQL - File Runtim..."]
    N0 --> N1
    N1 --> N2
    N2 --> N3


10. Quiz: Uji Pemahamanmu!

Setelah membaca tutorial di atas, jawablah 5 pertanyaan berikut untuk menguji pemahamanmu tentang Java:

Pertanyaan 1: Apa output dari kode berikut? System.out.println(15 / 4);

a) 3.75
b) 3
c) 4
d) Error

Pertanyaan 2: Keyword apa yang digunakan untuk pewarisan class di Java?

a) implements
b) extends
c) inherits
d) derives

Pertanyaan 3: Apa fungsi dari keyword final pada variabel?

a) Membuat variabel menjadi static
b) Membuat variabel tidak bisa diubah (konstanta)
c) Membuat variabel menjadi private
d) Membuat variabel nullable

Pertanyaan 4: Manakah yang BISA dilakukan oleh interface?

a) Memiliki constructor
b) Memiliki atribut instance (non-static)
c) Memiliki method default dengan body (Java 8+)
d) Diinstansiasi langsung dengan new

Pertanyaan 5: Blok mana yang SELALU dijalankan meskipun terjadi exception?

a) try
b) catch
c) finally
d) throws
🔍 Zoom
100%
🎨 Tema