Data Type, Operasi Arithmetic, dan Permasalahan Logika

Variable

Variable adalah peubah. Di dalam bahasa pemrograman variable bisa dibaratkan seperti gelas, gelas tersebut bisa diisi dengan cairan. Sederhananya, variable adalah tempat di memori yang digunakan untuk menyimpan suatu nilai. Gelas memiliki ukuran, variable juga memiliki ukuran. Ukuran di dalam variable disebut dengan data type. Setiap data memiliki panjang nilai.

Data Type

Data type terbagi ke dalam dua jenis, yaitu: primitive dan object reference. Data type primitive merupakan data type yang secara natural ada dalam setiap bahasa pemrograman dan tidak bisa diubah baik namanya maupun panjang nilainya. Sedangkan data type object reference adalah data type yang bisa dimodifikasi namanya dan modelnya. Untuk data type object reference akan dibahas pada pembahasan berikutnya. Sekarang kita membahas data type primitif.

Berikut ini data type primitive beserta panjang nilainya:

  • boolean: true / false
  • char: 16 bit (0 hingga 65535)
  • numeric
    • integer: 8 bit (-128 hingga 127)
    • short: 16 bit (-32768 hingga 32767)
    • int: 32 bit (-2147483648 hingga 2147483647)
    • long 64 bit (-huge hingga huge )
  • floating point
    • float: 32 bit
    • doubel: 64 bit

Cara Penulisan Variable

int varName = 30;

Setiap variable harus diberikan data type, ilustrasi di atas menjelaskan bahwa variable dengan nama “varName” memiliki data type “int”, tanda “=” adalah assignment operator yang digunakan untuk memberikan nilai. Sehingga varName memiliki nilai “30” yang tersimpan di dalam memori.

Aturan Penamaan Variable

Setiap bahasa pemrograman memiliki penamaan variable yang berbeda-beda, begitu juga dengan Java, berikut ini aturan-aturan penamaan pada bahasa pemrograman Java:

  • Penamaan variable di Java adalah case-sensitive, huruf besar dan kecil dianggap beda meskipun dalam pengucapannya sama, contoh “varName” dan “varNAme” adalah dua variable yang berbeda.
  • Nama variable harus diawali dengan huruf (a-z, A-Z), tanda dolar ($), dan undurscore (_) sehingga selain tanda-tanda tersebut tidak legal ketika diletakkan di awal nama variable. Contoh: “-varName” merupakan nama variable yang tidak legal karena diawali dengan selain huruf (a-z, A-Z), tanda dolar ($), dan undurscore (_). Meskipun penamaan variable bisa diawali dengan tanda dolar ($), dan undurscore (_) namun hal tersebut menyalahi convention sehingga seringkali programmer menggunakan huruf untuk karakter awal dalam penamaan variable.
  • Tidak boleh ada spasi yang memisahkan bagian dari nama variable. Contoh “var Name” adalah nama variable yang tidak legal.
  • Convention (tidak diharuskan) penamaan variable mengikuti aturan “camelCase”, dimana jika nama variable lebih dari dua kata maka untuk kata pertama huruf awalnya menggunakan huruf kecil sedangkan untuk kata kedua dan seterusnya huruf awalnya menggunakan huruf besar. Contoh: “myVarName”.
  • Gunakan penamaan yang merepresentasikan tujuan dari variable itu sendiri. Contoh: “result”, nama variable ini merepresentasikan dari hasil perhitungan operasi aritmatik.

Arithmetic Operator

Arithmetic Operator adalah operator (tanda) yang digunakan untuk melakukan perhitungan operasi aritmatika, berikut ini operatornya:

Operator Penggunaan di Java
Penjumlahan + x + 7
Pengurangan x – 7
Perkalian * x * 7
Pembagian / x / 7
Sisa bagi % x % 7

Level Prioritas Arithmetic Operator

Ketika ada operasi aritmatik yang di dalamnya terdapat beberapa operator maka cara untuk menghitungnya adalah mendahulukan arithmetic operator yang memiliki prioritas yang paling tinggi. Berikut ini urutan prioritas arithmetic operator:

Level Operator Asosiasi
1 *
/
%
kiri ke kanan
2 +
kiri ke kanan
3 = kanan ke kiri

Contoh:

d = a + b * c

Karena “*” level nya lebih tinggi daripada “+” maka “b * c” dihitung terlebih dahulu berikutnya hasil dari “b * c” ditambahkan dengan “a”. Hasil dari semuanya disimpan di variable “d”.

Bagaimana kalau operator di dalam operasi aritmatik tersebut memiliki level yang sama. Contoh: d = a / b * c, maka dilihat asosiasinya. “/” dan “*” berada pada level yang sama maka yang dihitung terlebih dahulu adalah tegantung pada asosiasinya. Asosiasi “/” dan “*” dari kiri kanan maka “a / b” dihitung terlebih dahulu berikutnya hasil dari “a / b” dikalikan dengan c. Hasilnya disimpan di variable d.

Arithmetic Operator Parentheses

Operator ini menggunakan tanda kurung buka dan kurung tutup atau “(“ dan “)”. Operator ini mampu merubah level prioritas arithmetic operator.

Contoh:

d = a + b * c

Menurut prioritas “*” dihitung terlebih dahulu maka untuk merubah supaya “+” dihitung terlebih dahulu, perhitungan operasi aritmatik tersebut bisa dirubah menjadi:

d = (a + b) * c

Arithmetic Compound Assignment Operator

Operator ini merupakan gabungan antara arithmetic operator dan assignment operator, berikut ini operator-operator-nya:

Operator Penggunaan di Java Asal
+= x += 2 x = x + 2
-= x -= 2 x = x – 2
*= x *= 2 x = x * 2
/= x /= 2 x = x / 2
%= x %= 2 x = x % 2

Bisa dilihat bahwa operator ini merupakan bentuk singkat dari operasi arithmetic, yaitu menggunakan kembali variable yang sama dalam perhitungan operasi arithmetic, misalkan x = x + 2, variable “x” dihitung kembali dengan menjumlahkannya dengan 2.

Increment dan Decrement Operator

Sesuai dengan namanya , increment operator adalah operator untuk menaikkan (menjumlahkan) satu suatu variable. Operator ini menggunakan tanda “++”. Sedangkan decrement operator adalah untuk menurunkan (mengurangi) satu suatu variable. Operator ini menggunakan tanda “–”. Pada masing-masing kedua operator tersebut, ada dua jenis, prefix dan post:

  • Prefix-increment: increment operator yang letaknya di depan variable. Contoh: “++var”. Oleh karenanya variable tersebut ditambahkan satu terlebih dahulu.
  • Posfix-increment: increment operator yang letaknya di belakang variable. Contoh: “var++”. Oleh karenanya variable tersebut tidak ditambahkan satu terlebih dahulu.
  • Prefix-decrement: decrement operator yang letaknya di depan variable. Contoh: “–var”. Oleh karenanya variable tersebut dikurangi satu terlebih dahulu.
  • Posfix-decrement: decrement operator yang letaknya di belakang variable. Contoh: “var–”. Oleh karenanya variable tersebut tidak dikurangi satu terlebih dahulu. Ilustrasi di bawah ini menunjukkan perbedaan antara prefixincrement dan postfox-increment.

Ilustrasi di bawah ini menunjukkan perbedaan antara prefixincrement dan postfox-increment.

package operator;
public class IncrementDecrement {
 public static void main(String [] args){
 int varPrefInc = 0;
 System.out.println(++varPrefInc); // 1
 System.out.println(++varPrefInc); // 2

 int varPostInc = 0;
 System.out.println(varPostInc++); // 0

 System.out.println(varPostInc++); // 1
 int varPrefDec = 2;
 System.out.println(--varPrefDec); // 1
 System.out.println(--varPrefDec); // 0
 int varPostDec = 2;
 System.out.println(varPostDec--); // 2
 System.out.println(varPostDec--); // 1
 }
}

Sebenarnya increment merupakan bentuk singkat dari:

var = var + 1

Sedangkan decrement merupakan bentuk singkat dari

var = var – 1

Equality Operator

Operator yang digunakan untuk membadingkan dua nilai yang bertype data numeric dan char dimana hasil dari perbandingan tersebut berupa boolean (true / false). Ada dua jenis equality operator, yaitu:

1. persamaan menggunakan tanda “==”
2. pertidaksamaan menggunakan tanda “!=”

public class Equality {
 public static void main(String [] args){
 int a = 4;
 int b = 3;
 boolean c1;
 boolean c2;
 c1 = a == b;
 System.out.println("c1 = a == b : "
 + c1); // c1 = a == b : false

 c2 = a != b;
 System.out.println("c2 = a != b : "
 + c2); // c1 = a != b : true
 }
}

Ilustrasi diatas merupakan contoh penerapan equality operator di Java. Variable “a” dan “b” yang ber-data type int (salah satu dari data type numeric) merupakan variable yang dibandingkan sedangkan variable “c1” dan “c2” yang ber-data type boolean (true / false) merupakan variable yang digunakan untuk menampung hasil dari perbandingan variable “a” dan “b”. Pada baris 7 mengecek apakah variable “a” dan “b” itu sama, dengan menggunakan tanda “==” (persamaan), karena variable “a” dan “b” tidak sama maka persamaan tersebut menghasilkan false. Sedangkan pada baris 11 menghasilkan true karena yang digunakan pada persamaan tersebut tanda “!=” (pertidaksamaan).

Relational Operator

Operator ini kegunaannya mirip dengan equality operator, yaitu kedua-duanya digunakan untuk membandingkan dua variable ber-data type numeric dan menghasilkan nilai yang ber-data type boolean (true / false), namun perbedaanya adalah operator ini memiliki himpunan / rentang nilai jika nilai-nili tersebut dibandingkan maka menghasilkan nilai true / false. Berikut ini tanda /simbol relational operator:

Simbol Cara Baca Penggunaan di Java
> Lebih dari x > y
< Kurang dari x < y
>= Lebih dari samadengan x >= y
<= Kurang dari samadengan x <= y
%= x %= 2 x = x % 2
public class Relational {
 public static void main(String [] args){
 int x = 4;
 int y = 10;

 boolean z;

 z = x > y;
 System.out.println("z = x > y : "
 + z); // z = x > y : false
 }
}

Pada baris 8 adalah membandingkan dua nilai, yaitu variable “x” dan “y”, apakah “x” lebih besar “y” ? Karena “x” bernilai 4 dan “y” bernilai 10 maka hasil dari perbandingan tersebut adalah false. Bisa diartikan bahwa semua bilangan “y” yang rentang nilainya di bawah “x” (dalam hal ini adalah 4), yaitu 3, 2, 1, 0, -1, dan seterusnya maka masuk ke dalam himpunan yang menghasilkan true. Ini juga berlaku sebaliknya, semua bilangan “y” yang rentang nilainya di atas “x” (dalam hal ini adalah 4), yaitu 5, 6, 7, 8, 9, dan seterusnya maka masuk ke dalam himpunan yang menghasilkan false. Namun, bagaimana kalau nilai “y” sama dengan 4, nilai 4 masuk ke dalam himpunan yang bernilai false. Seandainya baris 8 menggunakan tanda “>=” maka nilai 4 termasuk ke dalam himpunan yang bernilai true.

Logical Operator

Operator yang digunakan untuk menemukan jawaban dari suatu logika ekspresi, jawaban tersebut bernilai boolean, yaitu hanya memiliki nilai benar (true) dan salah (false). Logical operator yang dibahas disini, diataranya: (1) conditional AND (2) conditional OR (4) exclusive OR dan (5) logical NOT.

Conditional AND

Conditional AND ini menggunakan simbol “&&”. Seperti logika AND di pelajaran matematika, conditional AND ini juga memiliki table kebenaran, yaitu:

Ekspresi 1 Ekspresi 2 Expresi 1 && Ekspresi 2
false false false
false true false
true false false
true true true

Tabel kebenaran diatas menunjukkan bahwa conditional AND hanya menghasilkan true ketika semua ekspresinya bernilai true.

Conditional OR

Conditional OR ini menggunakan simbol “||”. Seperti logika OR di pelajaran matematika, conditional OR ini juga memiliki table kebenaran, yaitu:

Ekspresi 1 Ekspresi 2 Expresi 1 || Ekspresi 2
false false false
false true true
true false true
true true true

Tabel kebenaran diatas menunjukkan bahwa conditional OR hanya menghasilkan false ketika semua ekspresinya bernilai false.

Exclusive OR

Exclusive OR ini menggunakan simbol “^”. Tabel kebenaran exclusive OR sebagai berikut:

Ekspresi 1 Ekspresi 2 Expresi 1 ^ Ekspresi 2
false false false
false true true
true false true
true true false

Tabel kebenaran diatas menunjukkan bahwa exclusive OR hanya menghasilkan true ketika ada salah satu dari ekspresinya bernilai true.

Logical NOT

Logical NOT menggunakan simbol “!” adalah kebalikan dari suatu nilai boolean. Tabel kebenaran untuk logical NOT sebagai berikut:

Ekspresi !Ekspresi
false true
true false

Penerapan Logical

Operator Ekspresi yang dituliskan di tabel kebenaran bisa menggunakan equality dan relational operator. Berikut ini ilustrasinya:

public class Logical {
 public static void main(String [] args){
 int a = 4;
 int b = 3;
 boolean c1;
 boolean c2;

 c1 = a == b; // false
 c2 = a > b; // true

 System.out.println("c1 && c2 = "
 + (c1 && c2) ); // c1 && c2 = false
 System.out.println("c1 || c2 = "
 + (c1 || c2) ); // c1 && c2 = true
 System.out.println("c1 ^ c2 = "
 + (c1 ^ c2) ); // c1 ^ c2 = false
 System.out.println("!c1 = "
 + (!c1) ); // !c1 = true
 }

Baris 8 dan 9 menunjukkan suatu ekspresi yang masing-masing menggunakan equality dan relational operator. Sedangkan baris 11 – 18 merupakan contoh dari penerapan logical operator di Java.

Rangkuman

Variable adalah peubah. Di dalam bahasa pemrograman variable bisa dibaratkan seperti gelas, gelas tersebut bisa diisi dengan cairan. Data type terbagi ke dalam dua jenis, yaitu: primitive dan object reference. Data type primitive merupakan data type yang secara natural ada dalam setiap bahasa pemrograman dan tidak bisa diubah baik namanya maupun panjang nilainya. Sedangkan data type object reference adalah data type yang bisa dimodifikasi namanya dan modelnya.

Arithmetic Operator adalah operator (tanda) yang digunakan untuk melakukan perhitungan operasi aritmatika. Assigment operator adalah operator yang digunakan untuk memberikan nilai pada suatu variable, assignment operator ini menggunakan tanda sama dengan (=).

Arithmatic Operator Parentheses menggunakan tanda kurung buka dan kurung tutup atau “(“ dan “)”. Operator ini mampu merubah level prioritas arithmetic operator. Arithmetic Compound Assignment Operator merupakan gabungan antara arithmetic operator dan assignment operator.

Increment operator adalah operator untuk menaikkan (menjumlahkan) satu suatu variable. Operator ini menggunakan tanda “+ +”. Sedangkan decrement operator adalah untuk menurunkan (mengurangi) satu suatu variable. Operator ini menggunakan tanda “–”.

Equality operator yang digunakan untuk membadingkan dua nilai yang ber-type data numeric dan char dimana hasil dari perbandingan tersebut berupa boolean (true / false).

Relational operator ini kegunaannya mirip dengan equality operator, yaitu kedua-duanya digunakan untuk membandingkan dua variable ber-data type numeric dan menghasilkan nilai yang ber-data type boolean (true / false), namun perbedaanya adalah operator ini memiliki himpunan / rentang nilai jika nilai-nili tersebut dibandingkan maka menghasilkan nilai true / false.

Logical operator yang digunakan untuk menemukan jawaban dari suatu logika ekspresi, jawaban tersebut bernilai boolean, yaitu hanya memiliki nilai benar (true) dan salah (false).

Leave a Reply

Your email address will not be published. Required fields are marked *