Java adalah bahasa pemrograman strongly typed, yang berarti bahwa setiap variabel dan ekspresi memiliki tipe yang harus diketahui pada saat kompilasi. Tipe sendiri merupakan pola representasi suatu data di komputer dan berfungsi untuk mendefinisikan objek yang akan diprogram. Pada prinsipnya, tipe menentukan representasi internal data atau suatu nilai. Di Java, tipe data dibedakan menjadi dua jenis: primitif (primitive) dan referensi (reference).

* Tipe Primitif

Tipe primitif (atau dasar atau bawaan) merepresentasikan nilai-nilai sederhana yang memiliki fungsionalitas built-in di dalam bahasa. Ada delapan tipe primitif di Java, meliputi byte, short, int, long, float, double, char, dan boolean.

Semua tipe integer (byte, short, int, dan long) dan floating-point (float dan double) merupakan bilangan bertanda (signed number). Artinya, tipe-tipe ini dapat merepresentasikan bilangan positif dan negatif; implementasi lebih lanjut akan dibahas di Bab 5.

Setiap tipe primitif juga memiliki kelas pembungkus (wrapper) yang dapat digunakan untuk merepresentasikan nilai primitif sebagai suatu objek. Deskripsi mengenai nilai-nilai default dan kelas-kelas pembungkus dari tipe primitif diperlihatkan pada tabel berikut:

Tipe


Ukuran


Nilai Default


Rentang Nilai
byte 8 bits 0 -128 s/d 127
short 16 bits 0 -32768 s/d 32767
int 32 bits
long 64 bits 0L -263 s/d 263-1
float 32 bits 0.0f 1.4e-45 s/d 3.4e+38
double 64 bits 0.0d 5e-324 s/d 1.8e+308
char 16 bits \u0000 \u0000 s/d \uFFFF
boolean 1 bit false NA

Nilai default normalnya akan digunakan manakala variabel belum diinisialisasi. Namun tidak semua jenis variabel dapat diinisialisasi secara otomatis. Penjelasan lebih detail mengenai variabel akan kita bahas di subbab selanjutnya.

* Tipe Referensi

Tipe referensi (atau kelas atau nonprimitif atau komposit), merupakan tipe yang nilainya adalah suatu alamat (address). Jenis tipe ini meliputi kelas, interface, dan array. Di Java 5.0, ditambahkan dua tipe referensi baru, yaitu enumerasi dan anotasi.

Tidak seperti tipe primitif yang nilai default-nya variatif, semua tipe referensi nilai default-nya adalah null. Khusus untuk variabel lokal, tidak ada nilai default yang diberikan, sehingga harus kita inisialisasi.

Sedikitnya ada dua perbedaan mendasar yang bisa kita garisbawahi antara tipe primitif dan referensi.

* Tipe-tipe primitif didefinisikan oleh bahasa Java, sedangkan tipe referensi pada dasarnya adalah tipe user-defined.
* Tipe primitif merepresentasikan nilai tunggal, sedangkan tipe referensi dapat menampung nol atau lebih nilai primitif atau objek.

sumber: http://community.um.ac.id/showthread.php?76492-Tipe-Data-Java