Tipe Data dan Operator di Java
Tipe Data dan Operator di Java
Tipe Data
Tipe data merupakan bagian program yang paling penting karena tipe data
mempengaruhi setiap instruksi yang akan dilaksanakan oleh Komputer. Misalnya saja 5
dibagi 2 bisa saja menghasilkan hasil yang berbeda tergantung tipe datanya. Jika 5 dan 2
bertipe integer maka akan menghasilkan nilai 2, namun jika keduanya bertipe float maka
akan menghasilkan nilai 2.5000000. Pemilihan tipe data yang tepat akan membuat proses
operasi data menjadi lebih efisien dan efektif.
Bilangan Bulat
Tipe data yang masuk menjadi bagian ini adalah byte, short, int dan long. Semua tipe data
ini bersifat Signed, yaitu bisa mempresentasikan nilai positif dan negatif. Tidak
seperti tipe data lainnya, Java tidak mendukung tipe data unsigned yang hanya bisa
mempresentasikan nilai postif. Untuk jelasnya akan dijelaskan oleh tabel dan penjelasan
di bawah ini :
Tipe Data Ukuran (bit) Range
byte 8 -128 s.d. 127
short 16 -32768 s.d. 32767
int 32 -2147483648 s.d. 2147483647
long 64 -9223372036854775808 s.d. 9223372036854775807
Byte
Type byte umumnya digunakan pada saat kita bekerja dengan sebuah data stream dari
suatu file maupun jaringan, yaitu untuk kepeluan proses membaca/menulis. Selain itu,
tipe ini juga digunakan saat bekerja dengan data biner yang tidak kompatibel dengan tipe-
tipe lain yang didefiniskan di dalam Java.
Short
Pada umumnya diaplikasikan pada komputer-komputer 16-bit, yang saat ini semakin
jarang keberadaanya.
Int
Tipe ini merupaka ntipe yang paling banyak dipakai dalam merepresentasikan angka
dalam Java, dikarenakan dianggap paling efisien dibandingkan dengan tipe-tipe integer
lainnya. Tipe Int banyak digunakan untuk indeks dalam struktur pengulangan maupun
dalam konstruksi sebuah array.Selain itu, secara teori setiap ekspresi yang melibatkan
tipe integer byte, short, int, long) semuanya akan dipromosikan ke int terlebih dahulu
sebelum dilakukan proses perhitungan.
Long
Tipe ini digunakan untuk kasus-kasus tertentu yang nilainya berada di luar rentang
tipe int, karna tipe ini punya range paling tinggi dibanding Integer lainnya. Dengan kata
lain, tipe long terpaksa digunakan jika data memiliki range diluar range int.
Contoh Kode
b=15;
s=1220;
i=67100;
l=73423512;
System.out.println("b="+b);
System.out.println("s="+s);
System.out.println("i="+i);
System.out.println("l="+l);
}
}
Bilangan Pecahan
Tipe floating-point digunakan untuk merepresentasikan nilai-nilai yang mengandung
pecahan atau angka decimal di belakang koma, seperti 3.1416,5.25, dan sebagainya.
Bilangan semacam ini disebut sebagai bilangan riil. Dalam Java tipe ini dibedakan
menjadi dua jenis, yaitu float, dan double. Untuk jelasnya akan dijelaskan oleh tabel dan
penjelasan di bawah ini :
Tipe Ukuran Range Presisi
bytes bi (jumlah
t digit)
float 4 32 +/- 3.4 6-7
x 1038
double 8 64 +/- 1.8 15
x 10308
Float
Tipe ini digunakan untuk menandakan nilai–nilai yang mengandung presisi atau ketelitan
tunggal (single-precision) yang menggunakan ruang penyimpanan 32-bit. Presisi tunggal
biasanya lebih cepat untuk processor-processor tertentu dan memakan ruang
penyimpanan setengah kali lebih sedikit dibandingkan presisi ganda (double precision).
Permasalahan yang timbul dari pemakaian tipe float untuk nilai-nilai yang terlalu kecil
atau justru terlalu besar, karena nilai yang dihasilkan akan menjadi tidak akurat.
Double
Tipe ini mengandung tingkat ketelitian ganda atau presisi ganda (double precision) dan
menggunakan ruang penyimpanan 64-bit untuk menyimpan nilai. Tipe double tentu lebih
cepat untuk melakukan perhitungan-perhitungan matematis daripad tipe float. Untuk
perhitungan yang bersifat bilangan riil dan menghasilkan hasil yang lebih akurat, maka
lebih baik menggunakan tipe double.
Contoh Kode
f=5.4f;
d=7.8;
System.out.println("f="+f);
System.out.println("d="+d);
}
}
Char
Tipe data char merupakan tipe untuk menyatakan sebuah karakter. Java menggunakan
karakter Unicode untuk merepresentasikan semua karakter yang ada . Unicode ialah
sekumpulan karakter yang terdapat pada semua bahasa, seperti bahasa Latin, Arab,
Yunani dan lain-lainnya. Karena bahasa Java dirancang untuk dapat diterapkan di
berbagai macam platform, maka Java menggunakan karakter Unicode yang
membutuhkan ukuran 16-bit.
String
Tipe data String di dalam Java adalah tipe data yang terdiri dari kumpulan karakter yang
berurutan. Atau di dalam penggunaan sehari-hari string adalah tipe data yang
menampung nilai text atau kalimat.
Contoh Kode
s="Belajar Java";
System.out.println(s);
}
}
Boolean
Tipe boolean adalah tipe data yang digunakan untuk menampung nilai logika, yaitu nilai
yang hanya memiliki dua buah kemungkinan (benar atau salah). Tipe ini ditandai dengan
kata kunci Boolean. Dalam bahasa Java, nilai benar dipresentasikan dengan kata
kunci true dan nilai salah dengan kata kunci false.
Variabel
Variabel adalah suatu pengenal (identifier) yang digunakan untuk mewakili suatu nilai
tertentudi dalam proses program. Berbeda dengan konstanta yang nilainya selalu tetap,
nilai dari suatuvariable bisa diubah- ubah sesuai kebutuhan. Nama dari suatu variable
dapat ditentukan sendirioleh pemrogram dengan aturan sebagai berikut :
Terdiri dari gabungan huruf dan angka dengan karakter pertama harus berupa huruf.
Bahasa Java bersifat case-sensitive artinya huruf besar dan kecil dianggap berbeda. Jadi
antara nim, NIM dan Nim dianggap berbeda.
Tidak boleh mengandung spasi.
Tidak boleh mengandung symbol-simbol khusus, kecuali garis bawah (underscore). Yang
termasuk symbol khusus yang tidak diperbolehkan antara lain : $, ?, %, #, !, &,*, (, ), -, +,
=dsb
Panjangnya bebas, tetapi hanya 32 karakter pertama yang terpakai.
Deklarasi
Deklarasi diperlukan bila kita akan menggunakan pengenal (identifier) dalam program.
Identifier dapat berupa variable, konstanta dan fungsi. Bentuk umum pendeklarasian
suatu variable adalah :
Nama_tipe nama_variabel;
Contoh :
Operator adalah suatu simbol yang digunakan untuk memberikan perintah kepada
komputer untuk melakukan aksi terhadap satu atau lebih operand. Operand sendiri adalah
sesuatu yang dioperasikan oleh operator. Operasi yang dilakukan oleh operator
berupa perintah perhitungan, dan segala aksi yang ingin dimasukkan ke dalam program.
Operator Aritmetika
Operator Aritmetika digunakan pada ekspresi matematik seperti pada operasi aljabar.
Berikut ini merupakan daftar operator aritmetika :
Operator Relasional
Berikut ini operator relasional yang didukung dalam Java :
Operato
r Deskripsi Contoh
Operator Logika
Berikut ini daftar operator logika. Diasumsikan bahwa nilai Boolean
variabel A adalah true dan B adalah false, maka :
Operato
r Deskripsi Contoh
Operator Assignment
Berikut ini daftar operator assignment dalam Java :
b=(a==10)?20:30;
System.out.println(“Nilai b adalah : “+b);
}
}
Nilai b adalah : 30
Nilai b adalah : 20
Operator Instanceof
Operator ini digunakan hanya untuk variabel referensi objek. Operator memeriksa apakah
objek merupakan tipe tertentu.
Jika objek yang direferensikan oleh variabel di sebelah kiri operator merupakan tipe kelas
atau imterface di sebelah kanan, maka hasillnya adalah benar. Berikut contoh
penggunaannya :
class Kendaraan()
public class Mobil extends Kendaraan {
public static void main(String[] args) {
Kendaraan a=new Mobil();
boolean hasil=a instanceof Mobil;
System.out.println(hasil);
}
}
true
= += -= *= /= %=
Assigment >>= <<= &= ^= |= Kanan ke kiri
Bagan flow/alir dokumen (document flowchart) atau disebut juga bagan flow/alir
formulir (form flowchart) atau paperwork flowchart merupakan bagan alir yang
menunjukkan arus dari laporan dan formulir termasuk tembusan-tembusannya.
Bagan flow/alir skematik (schematic flowchart) merupakan bagan flow/alir yang mirip
dengan bagan alir sistem, yaitu untuk menggambarkan prosedur di dalam sistem.
Perbedaannya adalah, bagan alir skematik selain menggunakan simbol-simbol bagan
alir sistem, juga menggunakan gambar-gambar komputer dan peralatan lainnya yang
digunakan. Penggunaan gambar-gambar ini adalah untuk memudahkan komunikasi
kepada orang yang kurang paham dengan simbol-simbol bagan flow/alur.
Menunjukkan kontrol dari sebuah program dalam sebuah sistem. Bagan flow/alir
logika program digunakan untuk menggambarkan tiap-tiap langkah di dalam program
komputer secara logika. Bagan alat- logika program ini dipersiapkan oleh analis
sistem. Gambar berikut menunjukkan bagan flow/alur logika program.
Menunjukkan kontrol dari sebuah sistem aliran secara fisik. Bagan alir ini juga
berguna bagi analis sistem untuk menggambarkan proses dalam suatu prosedur.
Flowchart :
KET :
1. a : alas
2. t : tinggi
Coding Java :
import java.util.Scanner;
class segitiga
{ //awal program
public static void main (String[]args) {
Scanner input=new Scanner (System.in);
int a,t;
double luas ;
// memasukkan nilai a dan t
System.out.println();
System.out.println("[=->>-==--==--==--==--==--==--==--==--==--==--==--=<<-=]");
System.out.println("[=->>=--==--==--==--==--==--==--==--==--==--==--==-<<-=]");
System.out.println();
System.out.println(" [>>>====================================<<<]");
System.out.println(" Menghitung Luas Segitiga ");
System.out.println(" [>>>====================================<<<]");
System.out.println();
System.out.print(" Masukkan Nilai Alas : ");
a=input.nextInt();
System.out.print(" Masukkan Nilai Tinggi : ");
t=input.nextInt();
//menentukan rumus
luas = (0.5 * a) * t;
//menentukan hasil perhitungan
System.out.println();
System.out.println(" [>>>====================================<<<]");
System.out.println(" Hasil Menghitung Luas Segitiga ");
System.out.println(" [>>>====================================<<<]");
System.out.println();
System.out.println(" Luas Segitiga Adalah : "+luas );
System.out.println();
System.out.println(" [>>>====================================<<<]");
System.out.println();
System.out.println("[=->>-==--==--==--==--==--==--==--==--==--==--==--=<<-=]");
System.out.println("[=->>=--==--==--==--==--==--==--==--==--==--==--==-<<-=]");
}
} //akhir dari program
Dalam program diatas hanya ingin mencetak 10 angka mulai dari 0 sampai 9. Mengapa
dimulai dari nol? karena start di angka nol.
// mengambil input
System.out.print("Total Belanjaan: Rp ");
belanja = scan.nextInt();
// cek apakah dia belanja di atas 100000
if ( belanja > 100000 ) {
System.out.println("Selamat, anda mendapatkan hadiah!");
}
System.out.println("Terima kasih...");
Percabangan IF/ELSE
Sedangkan percabangan IF/ELSE memiliki pilihan alternatif kalau kondisinya
salah.
IF: “Jika kondisi benar maka kerjakan ini, kalau tidak silahkan lanjut”
IF/ELSE: “Jika kondisi benar maka kerjakan ini, kalau salah maka kerjakan yang
itu, setelah itu lanjut”.
Contoh kita akan buat sebuah program kelulusan misalkan, kalau nilai siswa lebih
besar dari 70, maka ia dinyatakan lulus. Kalau tidak, maka dia gagal. Maka
program yang dibuat adalah:
import java.util.Scanner;
}
Percabangan IF/ELSE dengan Operator Ternary
Selain menggunakan struktur seperti di atas, percahangan ini juga dapat
menggunakan operator ternary. Operator ternary memiliki konsep yang sama
seperti percabangan IF/ELSE. Contoh programnya:
public class OperatorTernary {
public static void main(String[] args) {
// menampilkan jawaban
System.out.println(jawaban);
}
}
Percabangan IF/ELSE/IF
Jika percabangan IF/ELSE hanya memiliki dua pilihan saja. Maka percahangan
IF/ELSE/IF memiliki lebih dari dua pilihan. Formatnya seperti ini:
if (suatu kondisi) {
// maka kerjakan ini
// kerjakan perintah ini juga
// …
} else if (kondisi lain) {
// kerjakan ini
// kerjakan ini juga
// …
} else if (kondisi yang lain lagi) {
// kerjakan perintah ini
// kerjakan ini juga
// …
} else {
// kerjakan ini kalau
// semua kondisi di atas
// tidak ada yang benar
// …
}
// mengambil input
System.out.print("Inputkan nilai: ");
nilai = scan.nextInt();
// higung gradenya
if ( nilai >= 90 ) {
grade = "A";
} else if ( nilai >= 80 ){
grade = "B+";
} else if ( nilai >= 70 ){
grade = "B";
} else if ( nilai >= 60 ){
grade = "C+";
} else if ( nilai >= 50 ){
grade = "C";
} else if ( nilai >= 40 ){
grade = "D";
} else {
grade = "E";
}
// cetak hasilnya
System.out.println("Grade: " + grade);
}
}
Percabangan SWITCH/CASE
Percabangan SWITCH/CASE sebenarnya adalah bentuk lain dari IF/ELSE/IF.
Bedanya, percabangan ini menggunakan kata kunci switch dan case. Formatnya
juga berbeda, tapi cara kerjanya sama. Berikut formatnya:
switch(variabel){
case 1:
// kerjakan kode ini
// kode ini juga
break;
case 2:
// kerjakan kode ini
// kode ini juga
break;
case 3:
// kerjakan kode ini
// kode ini juga
break;
default:
// kerjakan kode ini
// kode ini juga
break;
}
Perhatikan: case 1 artinya nilai variabel yang akan dibandingkan, apakah nilainya
sama dengan 1 atau tidak.
Kalau iya, maka kerjakan kode yang ada di dalam case 1.
Bisa juga betuknya berbeda, misalnya seperti ini:
switch (variabel) {
case 'A':
// lakukan sesuatu
break;
case 'B':
// lakukan ini
break;
default:
// lakukan ini
}
Perlu diperhatikan juga: di sana ada kata kunci break dan default.
break artinya berhenti. Ini untuk memerintahkan komputer untuk berhenti
mengecek case yang lainnya.
default artinya jika nilai variabel tidak ada yang sama dengan pilihan case di atas,
maka kerjakan kode yang ada di dalam default.
Pilihan default bisa juga tidak memiliki break, karena dia adalah pilihan terakhir.
Artinya pengecekan akan berakhir di situ.
Contoh program dengan percabangan SWITCH/CASE:
import java.util.Scanner;
// mengambil input
System.out.print("Inputkan nama warna: ");
lampu = scan.nextLine();
switch(lampu){
case "merah":
System.out.println("Lampu merah, berhenti!");
break;
case "kuning":
System.out.println("Lampu kuning, harap hati-hati!");
break;
case "hijau":
System.out.println("Lampu hijau, silahkan jalan!");
break;
default:
System.out.println("Warna lampu salah!");
}
}
}
Percabangan dalam percabangan (Nested)
Contoh kasus:
Misalnya ada model bisinis seperti ini di sebuah toko. Ketika orang membayar di
kasir, biasanya ditanya ada kartu member untuk mendapatkan diskon dan
sebagainya.
Atau dimisalkan:
Apakah anda punya kartu member?
- ya
* Apakah belanjaan anda lebih dari 500rb?
# ya : mendapatkan diskon 50rb
# tidak : tidak mendapatkan diskon
* Apakah belanjaan anda lebih dari 100rb?
# ya : mendapatkan diskon 15rb
# tidak: tidak mendapatkan diskon
- tidak
* Apakah belanjaan anda lebih dari 100rb?
# ya : mendapatkan diskon 10rb
# tidak: tidak mendapatkan diskon
// mengambil input
System.out.print("Apakah ada kartu member: ");
kartu = scan.nextLine();
System.out.print("Total belanjaan: ");
belanjaan = scan.nextInt();
// proses
if (kartu.equalsIgnoreCase("ya")) {
if (belanjaan > 500000) {
diskon = 50000;
} else if (belanjaan > 100000) {
diskon = 15000;
} else {
diskon = 0;
}
} else {
if (belanjaan > 100000) {
diskon = 5000;
} else {
diskon = 0;
}
}
// output
System.out.println("Total Bayar: Rp " + bayar);
}
}
Mungkin di sana ada yang perlu diperhatikan:
Fungsi equalsIgnoreCase("ya") digunakan untuk membandingkan String dengan
tidak memperdulikan huruf besar dan kecilnya.
Ada juga Fungsi equals(), fungsinya sama. Tapi equals() akan memperhatikan
case hurufnya.
Kenapa tidak menggunakan operator == atau !=?
Di Java memang seperti itu.
Kalau kita ingin membandingkan nilai String, ya… menggunakan fungsi yang
dua tadi.
Tapi, kalau membandingkan selain String, maka bisa pakai operator == atau !=.
// cara kedua
String nama[];
Perhatikan:
Kita menggunakan kurung siku [] untuk membuat array;
Kurung siku bisa diletakkan setelah tipe data atau nama array;
Angka 5 dalam kurung artinya batas atau ukuran array-nya.
Array yang kosong siap diisi dengan data. Pastikan mengisinya dengan data yang sesuai
dengan tipe datanya.
Kita bisa mengisinya seperti ini:
nama[0] = "Linda";
nama[1] = "Santi";
nama[2] = "Susan";
nama[3] = "Mila";
nama[4] = "Ayu";
Atau kalau tidak mau rept bias seperti ini:
String[] nama = {"Linda", "Santi", "Susan", "Mila", "Ayu"};
Setelah pendeklarasian array , kita harus membuat array dan menentukan berapa
panjangnya dengan sebuah konstruktor. Proses ini di Java disebut sebagai instantiation
(istilah dalam Java yang berarti membuat). Sebagai catatan bahwa ukuran dari array tidak
dapat diubah setelah anda menginisialisasinya. Sebagai contoh,
//deklarasi
String nama[];
//instantiate obyek
nama = new String[100];
Dalam Contoh kali ini saya akan menerapkannya dengan pemograman berorientasi objek.
Dengan sebuah kasus array 1 dimensi dengan overloading constructor dan array 2
dimensi dengan overloading method. Overloading constructor adalah sebuah constructor
yang sama, dalam satu class namun parameternya berbeda.
Berbeda jumlah variabelnya maupun berbeda tipe dari variabelnya. Oveloading method
adalah sebuah method yang sama, dalam satu class namun parameternya berbeda.
Berbeda jumlah variabelnya maupun berbeda tipe dari variabelnya. yang membedakan
antara constructor dengan method terletak pada retrun typenya jika method membutuhkan
retrun type / pengembalian nilai, tapi constructor tidak mebutuhkan retrun type namun
nama dari constructor harus sama dengan nama classnya. untuk lebih jelasnya mari lihat
contoh coding berikut:
Silahkan buat class bernama buah kemudian tulis kode berikut:
import java.util.Scanner;
// membuat scanner
Scanner scan = new Scanner(System.in);
System.out.println("---------------------------");
}
}
Perhatikan:
String[][] kontak = {
{"Lili","08111"},
{"Lala","08122"},
{"Maya","08133"}
};
Package pertemuan8;
System.out.println(“----------------------------------“);
meja[bar][kol] = scan.nextLine();
System.out.println("-------------------------");
}
System.out.println("");
System.out.println("-------------------------");
Karena array dua dimensi mirip seperti tabel, maka kita harus melakukan
perulangan terhadap baris dan kolomnya.
Array List
Maka dari itu, ada Array List yang menutupi kekurangan tersebut.
import java.util.ArrayList;
Setelah itu, baru kita bisa membuat sebuah objek Array List seperti ini: