Dari Pemula hingga Mahir - Tutorial Komprehensif, Praktik Langsung, dan Playground Interaktif
Java adalah bahasa pemrograman berbasis objek (OOP) yang dikembangkan oleh Sun Microsystems pada tahun 1995. Java dirancang untuk berjalan di berbagai platform dengan filosofi "Write Once, Run Anywhere" (WORA). Java menggunakan Java Virtual Machine (JVM) untuk mengeksekusi bytecode yang telah dikompilasi.
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Halo, Dunia!");
}
}
Memahami variabel dan tipe data di Java.
int umur = 25;
double tinggi = 175.5;
boolean aktif = true;
String nama = "Budi";
char huruf = 'A';
// Konversi Tipe
int angka = (int) 10.5;
String str = String.valueOf(100);
Menggunakan berbagai operator di Java.
int a = 10, b = 5;
// Aritmatik
int hasil = a + b;
hasil = a - b;
hasil = a * b;
hasil = a / b;
hasil = a % b;
// Perbandingan
boolean cek = a > b;
cek = a == b;
// Logika
cek = true && false;
cek = true || false;
cek = !true;
Kontrol alur program dengan if, switch, dan loop.
// If-Else
if (umur >= 18) {
System.out.println("Dewasa");
} else {
System.out.println("Anak-anak");
}
// For Loop
for (int i = 0; i < 5; i++) {
System.out.println(i);
}
// While Loop
int x = 0;
while (x < 5) {
System.out.println(x);
x++;
}
Bekerja dengan array dan multi-dimensi.
// Array 1D
int[] numbers = {1, 2, 3, 4, 5};
String[] nama = new String[3];
nama[0] = "Budi";
// Array 2D
int[][] matrix = {{1,2}, {3,4}};
matrix[0][1] = 5;
// Iterasi
for (int num : numbers) {
System.out.println(num);
}
Membuat dan menggunakan method.
public class Calculator {
// Method dengan return value
public int tambah(int a, int b) {
return a + b;
}
// Method tanpa return
public void cetakPesan() {
System.out.println("Halo!");
}
// Method dengan parameter banyak
public double rata2(int... angka) {
int sum = 0;
for (int n : angka) sum += n;
return sum / angka.length;
}
}
Manipulasi String di Java.
String text = "Hello World";
// Method String
int len = text.length();
String upper = text.toUpperCase();
String lower = text.toLowerCase();
boolean contains = text.contains("Hello");
String[] parts = text.split(" ");
String replaced = text.replace("World", "Java");
// String Builder
StringBuilder sb = new StringBuilder();
sb.append("Halo");
sb.append(" ");
sb.append("Dunia");
String hasil = sb.toString();
Membuat class dan object di Java.
public class Kendaraan {
// Atribut
private String merek;
private int tahun;
// Constructor
public Kendaraan(String merek, int tahun) {
this.merek = merek;
this.tahun = tahun;
}
// Getter
public String getMerek() {
return merek;
}
public void info() {
System.out.println(merek + " " + tahun);
}
}
// Penggunaan
Kendaraan mobil = new Kendaraan("Toyota", 2020);
mobil.info();
Pewarisan class di Java.
// Parent Class
public class Hewan {
public void suara() {
System.out.println("Suara hewan");
}
}
// Child Class
public class Kucing extends Hewan {
@Override
public void suara() {
System.out.println("Meow");
}
}
// Penggunaan
Kucing cat = new Kucing();
cat.suara();
// Polymorphism
Hewan h = new Kucing();
h.suara();
Menyembunyikan detail implementasi dengan access modifiers.
public class BankAccount {
private double balance;
private String accountNumber;
public BankAccount(String account) {
this.accountNumber = account;
this.balance = 0;
}
// Public Method
public void deposit(double amount) {
if (amount > 0) {
balance += amount;
}
}
public double getBalance() {
return balance;
}
}
BankAccount account = new BankAccount("1234");
account.deposit(100000);
System.out.println(account.getBalance());
Menggunakan abstract class dan interface.
// Abstract Class
public abstract class Bentuk {
abstract double hitungLuas();
public void cetak() {
System.out.println("Luas: " + hitungLuas());
}
}
// Implementation
public class Persegi extends Bentuk {
private double sisi;
public Persegi(double sisi) {
this.sisi = sisi;
}
@Override
double hitungLuas() {
return sisi * sisi;
}
}
Bentuk shape = new Persegi(5);
shape.cetak();
Menggunakan interface untuk kontrak method.
public interface Drawable {
void draw();
}
public interface Moveable {
void move();
}
public class Circle implements Drawable, Moveable {
@Override
public void draw() {
System.out.println("Menggambar lingkaran");
}
@Override
public void move() {
System.out.println("Menggerakkan lingkaran");
}
}
Circle c = new Circle();
c.draw();
c.move();
Menggunakan ArrayList untuk dynamic array.
import java.util.ArrayList;
ArrayList list = new ArrayList<>();
// Add element
list.add("Apel");
list.add("Mangga");
list.add("Jeruk");
// Akses element
String first = list.get(0);
list.set(1, "Nanas");
// Hapus element
list.remove(0);
// Iterasi
for (String buah : list) {
System.out.println(buah);
}
// Size
int size = list.size();
Menggunakan HashMap untuk key-value pairs.
import java.util.HashMap;
HashMap map = new HashMap<>();
// Add element
map.put("Budi", 85);
map.put("Andi", 90);
map.put("Citra", 88);
// Get element
int nilai = map.get("Budi");
// Cek key
if (map.containsKey("Andi")) {
System.out.println("Ada");
}
// Iterasi
for (String key : map.keySet()) {
System.out.println(key + ": " + map.get(key));
}
Menggunakan HashSet untuk unique values.
import java.util.HashSet;
HashSet set = new HashSet<>();
// Add element
set.add(10);
set.add(20);
set.add(30);
set.add(10); // Duplikat tidak ditambah
// Size
System.out.println(set.size()); // 3
// Cek element
if (set.contains(20)) {
System.out.println("Ada");
}
// Hapus
set.remove(20);
// Iterasi
for (int num : set) {
System.out.println(num);
}
Menangani exception dengan try-catch.
try {
int[] numbers = {1, 2, 3};
System.out.println(numbers[5]); // Error
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("Index di luar batas!");
e.printStackTrace();
} catch (Exception e) {
System.out.println("Error terjadi");
} finally {
System.out.println("Selalu dijalankan");
}
Melempar exception sendiri.
public void validasiUmur(int umur)
throws IllegalArgumentException {
if (umur < 0) {
throw new IllegalArgumentException(
"Umur tidak boleh negatif");
}
System.out.println("Umur valid: " + umur);
}
public static void main(String[] args) {
try {
validasiUmur(-5);
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
}
}
Menggunakan Generics untuk type-safe code.
public class Container {
private T value;
public void setValue(T val) {
this.value = val;
}
public T getValue() {
return value;
}
}
// Penggunaan
Container strContainer =
new Container<>();
strContainer.setValue("Hello");
String result = strContainer.getValue();
Container intContainer =
new Container<>();
intContainer.setValue(42);
Menulis code yang singkat dengan lambda.
@FunctionalInterface
public interface Operasi {
int calculate(int a, int b);
}
public class Main {
public static void main(String[] args) {
// Lambda Expression
Operasi tambah = (a, b) -> a + b;
Operasi kurang = (a, b) -> a - b;
System.out.println(tambah.calculate(5, 3));
System.out.println(kurang.calculate(5, 3));
}
}
Processing data dengan Stream.
import java.util.Arrays;
import java.util.List;
List numbers =
Arrays.asList(1, 2, 3, 4, 5);
// Filter & Map
numbers.stream()
.filter(n -> n > 2)
.map(n -> n * 2)
.forEach(System.out::println);
// Reduce
int sum = numbers.stream()
.reduce(0, (a, b) -> a + b);
System.out.println("Sum: " + sum);
Buatlah sistem bank dengan fitur deposit, withdraw, dan cek saldo.
Sistem untuk mengelola buku dan peminjam perpustakaan.
Tulis kode Java di bawah dan lihat output secara real-time.
int - Integersdouble - Decimal Numbersboolean - True/Falsechar - Single CharacterString - Textpublic - All Accessprivate - Class Onlyprotected - Package & childdefault - Package onlytoString() - String representationequals() - ComparisonhashCode() - Hash valueclone() - Object duplication