🔢 Tipe Data di Java

💡Apa itu Tipe Data?

Tipe data dalam Java menentukan jenis nilai yang dapat disimpan dalam variabel dan berapa banyak memori yang dialokasikan. Java adalah bahasa strongly typed, artinya setiap variabel harus dideklarasikan dengan tipe data yang jelas.

Perbedaan dengan JavaScript: Di Java, tipe data harus dideklarasikan secara eksplisit dan tidak bisa diubah (immutable type).

🎮

Simulasi Memori

Lihat bagaimana Java menyimpan tipe data di memori

📊 Visualisasi Memori:

0x001
umur
int
25
0x002
tinggi
double
170.5
0x003
nama
String
"Budi"
0x004
aktif
boolean
true

🔢1. Tipe Data Primitif - Integer

Java memiliki beberapa tipe data integer dengan ukuran memori yang berbeda:

TipeUkuranRangeContoh
byte1 byte (8 bit)-128 s/d 127byte umur = 25;
short2 bytes (16 bit)-32,768 s/d 32,767short tahun = 2024;
int4 bytes (32 bit)-2.1M s/d 2.1Mint populasi = 1000000;
long8 bytes (64 bit)-9.2E18 s/d 9.2E18long jarak = 1000000000L;
java
// Contoh penggunaan integer types
public class IntegerDemo {
    public static void main(String[] args) {
        // byte: untuk nilai kecil
        byte umur = 25;
        byte suhu = -10;
        
        // short: untuk nilai sedang
        short jumlahSiswa = 500;
        short tahun = 2024;
        
        // int: paling umum digunakan
        int populasi = 1000000;
        int saldo = -50000;
        
        // long: untuk nilai sangat besar (tambahkan L di akhir)
        long jarakBumi = 149600000000L;
        long pendudukDunia = 8000000000L;
        
        System.out.println("Umur: " + umur);
        System.out.println("Populasi: " + populasi);
        System.out.println("Jarak Bumi-Matahari: " + jarakBumi + " km");
    }
}

🎯2. Tipe Data Floating Point

Untuk bilangan desimal, Java menyediakan float dandouble.

java
// Contoh floating point
public class FloatDemo {
    public static void main(String[] args) {
        // float: presisi 6-7 digit (tambahkan f di akhir)
        float tinggi = 170.5f;
        float berat = 65.3f;
        float pi = 3.14159f;
        
        // double: presisi 15-16 digit (default untuk desimal)
        double saldo = 1500000.75;
        double luasLingkaran = 3.14159265359 * 5 * 5;
        double suhuAkurat = 36.567891234;
        
        // Perhitungan BMI
        double bmi = berat / ((tinggi / 100) * (tinggi / 100));
        
        System.out.println("Tinggi: " + tinggi + " cm");
        System.out.println("Berat: " + berat + " kg");
        System.out.println("BMI: " + bmi);
        System.out.println("Luas Lingkaran: " + luasLingkaran);
    }
}

💡 Best Practice:

Gunakan double untuk perhitungan yang membutuhkan presisi tinggi. floatlebih hemat memori tapi kurang akurat.

🎮

Demo Interaktif: Integer Counter

Lihat nilai integer yang berubah secara real-time

0

Nilai int counter = 0

Tipe data int dapat menyimpan nilai dari -2,147,483,648 hingga 2,147,483,647

🔤3. Tipe Data Character

char digunakan untuk menyimpan satu karakter Unicode (2 bytes).

java
// Contoh character
public class CharDemo {
    public static void main(String[] args) {
        // char: harus menggunakan tanda kutip tunggal
        char huruf = 'A';
        char simbol = '@';
        char angka = '5';  // Ini char, bukan int!
        
        // Unicode character
        char heart = '\u2764';  // ❤
        char smiley = '\u263A'; // ☺
        
        // Operasi dengan char
        char ch = 'A';
        System.out.println("Char: " + ch);
        System.out.println("ASCII value: " + (int)ch);  // 65
        
        // Increment char
        ch++;
        System.out.println("Setelah increment: " + ch);  // B
    }
}

4. Tipe Data Boolean

boolean hanya memiliki dua nilai:true ataufalse.

java
// Contoh boolean
public class BooleanDemo {
    public static void main(String[] args) {
        // Deklarasi boolean
        boolean aktif = true;
        boolean lulus = false;
        
        // Boolean dari ekspresi
        int umur = 20;
        boolean dewasa = umur >= 17;  // true
        
        int nilai = 85;
        boolean lulusUjian = nilai >= 70;  // true
        
        // Operasi logika
        boolean punyaSIM = true;
        boolean bisaMenyetir = dewasa && punyaSIM;  // true
        
        System.out.println("Dewasa: " + dewasa);
        System.out.println("Lulus: " + lulusUjian);
        System.out.println("Bisa Menyetir: " + bisaMenyetir);
    }
}
🎮

Demo Boolean Toggle

Klik tombol untuk mengubah nilai boolean

FALSE

boolean aktif = false

📝5. String (Reference Type)

String bukan tipe primitif, melainkan class. String adalah kumpulan karakter.

java
// Contoh String
public class StringDemo {
    public static void main(String[] args) {
        // Deklarasi String (gunakan kutip ganda)
        String nama = "Budi Santoso";
        String alamat = "Jakarta";
        String email = "budi@example.com";
        
        // String kosong
        String kosong = "";
        
        // Concatenation (penggabungan)
        String sapaan = "Halo, " + nama + "!";
        System.out.println(sapaan);
        
        // Method String
        System.out.println("Panjang: " + nama.length());        // 13
        System.out.println("Uppercase: " + nama.toUpperCase()); // BUDI SANTOSO
        System.out.println("Lowercase: " + nama.toLowerCase()); // budi santoso
        System.out.println("Char at 0: " + nama.charAt(0));     // B
        
        // Substring
        String firstName = nama.substring(0, 4);  // "Budi"
        System.out.println("Nama depan: " + firstName);
        
        // Contains
        boolean adaEmail = email.contains("@");  // true
        System.out.println("Email valid: " + adaEmail);
    }
}
🎮

Demo String Manipulation

Ketik sesuatu dan lihat hasilnya

Length:

0

Uppercase:

Lowercase:

Reversed:

🔄6. Type Casting

Type casting adalah konversi dari satu tipe data ke tipe data lainnya.

java
// Type Casting
public class CastingDemo {
    public static void main(String[] args) {
        // Widening Casting (otomatis): kecil -> besar
        int angkaInt = 100;
        long angkaLong = angkaInt;        // int -> long
        double angkaDouble = angkaLong;   // long -> double
        
        System.out.println("Int: " + angkaInt);
        System.out.println("Long: " + angkaLong);
        System.out.println("Double: " + angkaDouble);
        
        // Narrowing Casting (manual): besar -> kecil
        double nilaiDouble = 9.78;
        int nilaiInt = (int) nilaiDouble;  // 9 (desimal hilang)
        
        System.out.println("Double: " + nilaiDouble);
        System.out.println("Int (cast): " + nilaiInt);
        
        // String ke Integer
        String strAngka = "123";
        int converted = Integer.parseInt(strAngka);
        System.out.println("String to int: " + converted);
        
        // Integer ke String
        int angka = 456;
        String strResult = String.valueOf(angka);
        System.out.println("Int to String: " + strResult);
    }
}

📝 Ringkasan Tipe Data Java

Tipe Primitif:

  • byte, short, int, long → Integer
  • float, double → Floating point
  • char → Karakter tunggal
  • boolean → true/false

Reference Type:

  • String → Kumpulan karakter
  • Array → Kumpulan data
  • Class → Object