Mengenal Tipe Data Integer pada Java

baca 5 menit
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 DataUkuranNilaiBentuk Objek
byte8 bit (1 byte)-128 sampai 127Byte
short16 bit (2 byte)-32.768 sampai 32.767Short
int32 bit (4 byte)-2.147.483.648 sampai 2.147.483.647Integer
long64 bit (8 byte)-9.223.372.036.854.775.808 sampai 9.223.372.036.854.775.807Long

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.

java
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:

java
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:

java
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:

java
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:

java
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:

  1. Kurung terdalam
  2. Kali / bagi
  3. Tambah / kurang
  4. Operasi dari kiri

Assignment Aritmatika

Selanjutnya ada assignment aritmatika, alias operasi assignment yang disatukan dengan aritmatika.

Misal kita punya kode seperti ini:

java
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:

java
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.

java
a = a + 1; // versi lengkap
a += 1;    // lebih sederhana
++a;       // lebih sangat sederhana
a++;       // sama seperti di atas

Belum percaya? Coba jalankan kode ini:

java
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.

java
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:

java
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 👋