Mengenal Tipe Data Integer pada Java
Pada kesempatan kali ini kita akan membahas mengenai tipe data integer yang dapat menampung bilangan bulat.
Tentang Tipe Data Integer
Integer, sesuai namanya merupakan tipe data yang hanya bisa menampung bilangan bulat saja (negatif, nol, dan positif)
Sub Tipe data Integer
Pada Java dan bahasa pemrograman pada umumnya tipe data integer ini dibagi menjadi 4 sub tipe berdasarkan panjang memorinya. Diantaranya adalah:
Tipe Data | Ukuran | Nilai | Bentuk Objek |
---|---|---|---|
byte | 8 bit (1 byte) | -128 sampai 127 | Byte |
short | 16 bit (2 byte) | -32.768 sampai 32.767 | Short |
int | 32 bit (4 byte) | -2.147.483.648 sampai 2.147.483.647 | Integer |
long | 64 bit (8 byte) | -9.223.372.036.854.775.808 sampai 9.223.372.036.854.775.807 | Long |
Karena semua di Java adalah Objek, tiap primitif juga punya bentuk padanan objeknya — bisa dilihat pada tabel di atas. Cara membedakannya gampang, tinggal lihat huruf awalnya saja. Kalau diawali kapital berarti itu objek.
Untuk penggunaannya sendiri silahkan disesuaikan dengan kebutuhan. Pada kebanyakan kasus, tipe int
paling sering digunakan, namun jika butuh angka yang sangat besar bisa digunakan long
. Di bawah itu (short
, dan byte
) cukup jarang dijumpai.
Literal Integer
Literal yang diterima oleh tipe data integer adalah angka bulat. Angka ini dapat dituliskan dalam berbagai format, diantaranya:
- Desimal (basis 10) — Angka desimal biasa, tidak ada format spesial. Contoh: 1, 95, -29, 1000
- Oktal (basis 8) — Format diawali angka
0
. Contoh: 01, 0137, -035, 01750 - Heksadesimal (basis 16) — Format diawali karakter
0x
. Contoh: 0x1, 0x5f, -0x1d, 0x3e8 - Biner (basis 2) — Format diawali karakter
0b
. Contoh: 0b1, 0b1011111, -0b11101, 0b1111101000
Supaya lebih kebayang, kita akan coba buat contoh kode programnya.
public class TipeDataInteger{
public static void main(String[] args) {
int decimal = 250;
int octal = 0372;
int hexadecimal = 0xfa;
int binary = 0b11111010;
System.out.println(decimal);
System.out.println(octal);
System.out.println(hexadecimal);
System.out.println(binary);
}
}
Sekarang, kalau kita jalankan, outputnya akan seperti ini:
250
250
250
250
Bisa kita lihat, ketika kita cetak isi dari variabel semuanya sama yaitu 250. Ini karena mau apapun format bilangannya, di dalam memori pasti disimpan dalam 1 bentuk yang sama, sehingga luarannya juga otomatis sama.
Jika ingin meng-output-kan angka sesuai format yang diinginkan, kita bisa menggunakan printf
dengan template yang sesuai. Contohya:
public class TipeDataInteger{
public static void main(String[] args) {
int number = 250;
System.out.printf("desimal : %d\n", number);
System.out.printf("octal : %o\n", number);
System.out.printf("hexadesimal: %x\n", number);
}
}
Coba jalankan dan lihat hasilnya.
Menggunakan Karakter Pemisah
Literal integer pada Java juga memungkinkan kita menambahkan karakter pemisah berupa underscore (_
). Karakter pemisah ini bisa membantu ketika kita mendeklarasikan nilai yang besar. Contohnya seperti ini:
int satuJuta = 1_000_000; // sama seperti 1000000
int satuMiliar = 1_000_000_000; // sama seperti 1000000000
int seribu = 1_00_0; // valid namun tidak disarankan untuk alasan keterbacaan
Operasi Tipe Data Integer
Operasi Aritmatika
Sebagai tipe data numerik, integer memiliki operasi yang kurang lebih sama seperti operasi bilangan pada umumnya. Termasuk juga ada perkalian, pembagian, penjumlahan, dan pengurangan.
Hal yang spesial mungkin ada pada operasi pembagiannya. Pada Java, apabila ada variabel atau literal bertipe integer dibagi dengan integer lainnya, maka hasilnya akan otomatis dibulatkan.
Ini disebabkan karena operasi pembagian memiliki kemungkinan menghasilkan bilangan pecahan yang dalam Java bertipe float. Nah, untuk menghindari perubahan tipe data ini, maka hasil yang keluar harus dibulatkan agar tetap bertipe integer.
Contohnya:
int a = 10;
int b = 3;
int c = a / b; // nilai c adalah 3
int d = 6 / 5; // nilai d adalah 1
Satu lagi, Java juga mengenal operasi modulus yang ditandai dengan operator %
. Operasi ini digunakan untuk mendapatkan sisa bagi 2 bilangan.
Contohnya:
int a = 10;
int b = 3;
int c = a % b; // nilai c adalah 1
int d = 6 % 5; // nilai d adalah 1
Sama seperti di matematika, proses perhitungan bilangan juga memiliki urutan. Urutan ini mengikuti aturan yang ada di matematika yaitu:
- Kurung terdalam
- Kali / bagi
- Tambah / kurang
- Operasi dari kiri
Assignment Aritmatika
Selanjutnya ada assignment aritmatika, alias operasi assignment yang disatukan dengan aritmatika.
Misal kita punya kode seperti ini:
int a = 10;
a = a + 20; // nilai a: 10 + 20 = 30
a = a * 5; // nilai a: 30 * 5 = 150
a = a / 2; // nilai a: 150 / 2 = 75
Operasi tersebut dapat disingkat menjadi seperti ini:
int a = 10;
a += 20; // nilai a: 10 + 20 = 30
a *= 5; // nilai a: 30 * 5 = 150
a /= 2; // nilai a: 150 / 2 = 75
Bagaimana? lebih singkat kan. Kalau kita coba cetak nilai a
maka hasilnya pasti sama, baik menggunakan versi lengkap (atas) maupun assignment aritmatika (bawah).
Unary Operator
Terakhir ada unary operator. Kalau sebelumnya tiap operasi melibatkan setidaknya 2 literal atau variabel, dengan unary operator ini kita hanya perlu 1 variabel saja.
Ada 4 jenis unary operator untuk tipe Integer, diantaranya:
- Pre-increment (
++a
) - Post-increment (
a++
) - Pre-decrement (
--a
) - Post-decrement (
a--
)
Fungsinya sebenarnya sederhana, untuk menambah atau mengurangi variabel dengan angka 1. Kalau kita jabarkan, 4 baris kode di bawah ini punya fungsi yang sama.
a = a + 1; // versi lengkap
a += 1; // lebih sederhana
++a; // lebih sangat sederhana
a++; // sama seperti di atas
Belum percaya? Coba jalankan kode ini:
public class TipeDataInteger{
public static void main(String[] args) {
int a = 10;
int b = 10;
a++; // atau ++a
b--; // atau --b
System.out.println(a);
System.out.println(b);
}
}
Jika dijalankan pasti akan keluar angka 11 dan 9.
Nah, mungkin muncul pertanyaan. Kalau fungsinya sama kenapa harus ada 2 versi post dan pre?
Sekilas jika berdiri sendiri memang fungsinya sama yaitu menambah atau mengurang bilangan. Tetapi, sebenarnya selain menambah dan mengurang, operasi ini juga akan mengembalikan nilai.
Nah pre dan post di sini menunjukkan kapan nilai itu dikembalikan. Pada operasi pre nilai variabel terkini akan dioperasikan dulu sebelum dikembalikan. Sedangkan pada operasi post nilai terkini akan dikembalikan dulu sebelum dioperasikan.
Supaya tidak bingung, kita coba lihat contoh kodenya.
public class TipeDataInteger{
public static void main(String[] args) {
int a = 1;
System.out.println(++a); // output: 2
System.out.println(a); // output: 2
int b = 1;
System.out.println(b++); // output: 1
System.out.println(b); // output: 2
}
}
Mungkin kalau kita jabarkan, kode di atas sama seperti ini:
public class TipeDataInteger{
public static void main(String[] args) {
int a = 1;
a += 1;
System.out.println(a); // output: 2
System.out.println(a); // output: 2
int b = 1;
System.out.println(b); // output: 1
b += 1;
System.out.println(b); // output: 2
}
}
Semoga dapat konsepnya lah ya.
Selanjutnya
Pembahasan mengenai integer ini cukup banyak ya. Tapi secara umum tipe data numerik cukup sederhana sebenarnya, bahkan operasi di atas semuanya bisa kita gunakan pada untuk tipe data float.
Bahkan beberapa dari operasi di atas ada juga yang bisa dipakai untuk tipe data String. Karena itu, mungkin pada kesempatan selanjutnya akan ada banyak bagian yang merujuk ke artikel ini.
Pada kesempatan selanjutnya kita masih akan membahas tentang tipe data numerik yaitu float pada bahasa Java.
Semoga bermanfaat, selamat berkoding ria 👋