Pengenalan Bahasa Pemrograman Java Apa yang Disebut Java ? • Bahasa pemrograman berorientasi objek murni yang dibuat berdasarkan kemampuan-kemampuan terbaik bahasa pemrograman objek sebelumnya (C++, Ada, Simula). • Diciptakan oleh James Gosling, developer dari Sun Microsystems pada tahun 1991. 2 Karakteristik Java • Sederhana, semudah C dan seampuh C++: berlawanan dengan anggapan orang-orang bahwa bahasa Java sulit untuk dipelajari, Java gampang untuk dipelajari terutama untuk orang yang sudah mengenal pemrograman tapi belum terlalu terikat pada paradigma pemrograman prosedural. Tentu saja ini berarti bahwa kita harus siap mempelajari salah satu teknologi yang berkembang paling cepat di dunia dalam dua tahun terakhir ini dengan banyak membaca tentunya baik dari buku maupun melalui web. 3 Karakteristik Java • Sangat berorientasi obyek (OOP) dengan implementasi yang sangat baik • Arsitekturnya yang kokoh dan pemrograman yang aman. Dalam Java program yang kita buat tidak mudah untuk “hang” karena konflik pada memori biasanya diselesaikan dengan mengumpulkan obyek-obyek yang sudah tak terpakai lagi secara otomatis oleh garbage collector. Penanganan kesalahan juga dipermudah dalam Java dengan konsep Exception 4 Karakteristik Java • Bukan sekedar bahasa tapi juga platform sekaligus arsitektur. Java • mempunyai portabilitas yang sangat tinggi. Ia dapat berada pada smartcard, pager, POS (Point of Service), handphone, PDA, palm, TV, Embedded device (PLC, micro controller), laptop, pc, dan bahkan server). Menyadari akan hal ini Sun membagi arsitektur Java membagi tiga bagian, yaitu: • Enterprise Java (J2EE) untuk aplikasi berbasis web, aplikasi sistem tersebar dengan beraneka ragam klien dengan kompleksitas yang tinggi. Merupakan superset dari Standar Java • Standard Java (J2SE), ini adalah yang biasa kita kenal sebagai bahasa Java, dan merupakan fokus kita sekarang. • Micro Java (J2ME) merupakan subset dari J2SE dan salah satu aplikasinya yang banyak dipakai adalah untuk wireless device/mobile device 5 Karakteristik Java • Program Java dijalankan menggunakan interpreter melalui Java Virtual machine (JVM). Hal ini menyebabkan source code Java yang telah dikompilasi menjadi Java bytecodes dapat dijalankan pada platform yang berbeda-beda. • Fitur-fitur utama yang lain: - Mendukung multithreading. - Selalu memeriksa tipe obyek pada saat runtime. 6 Java Sun Microsystem • Java 2 Software Developer Kit (J2SDK) Windows SPARC X86 Solaris Linux • Versi terbaru Java SE 6 7 Bagaimana Java Bekerja ? 8 Bagaimana Java Bekerja ? ( lanjutan ) 9 Java Platform • Platform dapat diartikan sebagai lingkungan perangkat keras atau perangkat lunak dimana program dijalankan. Umumnya platform berdasarkan nama sistem operasi yang digunakan, misalnya Windows 2000, Linux, Solaris, atau MacOS. • Platform Java mempunyai dua komponen, yaitu: • Java Virtual machine (Java VM) Merupakan fondasi untuk platform Java yang dapat digunakan di berbagai platform perangkat keras. • Java Application Programming Interface (Java API) Kumpulan komponen-komponen perangkat lunak siap pakai (ready-made software components) untuk berbagai keperluan 10 Membuat Program Java • Persiapan Download dan Instalasi J2SDK Setting jalur eksekusi • Penulisan program: Menulis program Kompilasi Eksekusi 11 Persiapan • Download dan Installasi J2SDK http://java.sun.com/javase/downloads/ • Setting jalur eksekusi Settings – Control Panel – System – Advanced – Environment Variables 12 Identifier di Java • • Identifier adalah nama yang diberikan kepada variabel, method, kelas, paket, dan interface Adapun tatacara penamaan identifier: 1. Case sensitive, huruf kapital dan kecil dibedakan 2. Identifier yang diberikan oleh pemrogram tidak boleh sama dengan keyword yang ada di Java 3. Dimulai dengan huruf atau underscore (garis bawah) atau tanda ($). Namun sebisa mungkin diawali dengan huruf karena mungkin identifier dengan awalan underscore dan ($) digunakan unruk pemrosesan internal dan file import 4. Karakter berikutnya dapat berupa huruf atau angka 0 sampai 9. Simbol-simbol seperti ‘+’ dan spasi tidak dapat digunakan 13 Keywords di Java • Keyword adalah identifier yang digunakan Java untuk suatu tujuan khusus. Daftar keyword Java adalah sebagai berikut: abstract do implements private this boolean double import protected throw break else instanceof public throws byte extends int return transient case false interface short true catch final long static try char finally native strictfp void class float new super volatile continue for null switch while default if package synchronized 14 Contoh Penulisan Nama Variabel yang Diizinkan • • • • • • • @2var _status tanggal jumlahBarang nama_kecil final_test int_float 15 Tipe Data di Java • Tipe data dalam Java dibagi dalam dua kategori: 1. Sederhana (primitif) 2. Komposit (referensi) 16 Tipe data sederhana (primitif) • Tipe data sederhana merupakan tipe inti. Tipe sederhana tidak diturunkan dari tipe lain. Terdapat delapan tipe data primitif di Java: - Empat tipe adalah untuk bilangan bulat (integer) : byte, short, int, long - Dua untuk tipe angka pecahan (floating point): float, double - Satu untuk tipe karakter, yaitu char - Satu untuk tipe boolean yang berisi nilai logika: true/false 17 Tipe data sederhana (primitif) Integer: Tipe Data byte short int long Panjang 8 bit 16 bit 32 bit 64 bit Rentang Nilai -27 sampai 27 - 1 (-128 sampai 127 ) (256 kemungkinan nilai) -215 sampai 215 - 1 (-32.768 sampai 32.767) (65.535 kemungkinan nilai) -231 sampai 231 - 1 ( -2.147.483.648 sampai 2.147.483.647) (4.294.967.296 kemungkinan nilai) -2-63 sampai 263 - 1 ( -9.223.372.036.854.775.808 sampai 9.223.372.036.854.775.807) (18.446.744.073.709.551.616 kemungkinan nilai) Contoh Nilai 5 -126 9 -23659 2067456397 -1456398567 3L -2147483648L 67L 18 Tipe data sederhana (primitif) Floating Point: Tipe data floating point merupakan tipe data untuk untuk variabel yang nilai-nilainya adalah bilangan real (dapat mempunyai pecahan desimal). Tipe Data float double Panjang 32 bit 64 bit Contoh Penulisan Nilai yang Diperbolehkan 78F -34736.86F 6.4E4F ( sama dengan 6,4 x 104 ) -2356 3.5E7 67564788965.567 19 Tipe data sederhana (primitif) Char: Tipe data textual merupakan tipe data untuk variabel yang nilai-nilainya adalah karakter tunggal. Tipe data yang merupakan tipe data textual adalah char yang memiliki panjang 16 bit. Nilai variabel char ditulis dengan diberi tanda kutip tunggal ‘...’. Berikut contoh penggunaan tipe data char : public char alphabet = ‘A’; public char ascii = ‘\111’; // jika dicetak, akan menghasilkan // huruf ‘I’; 20 Tipe data sederhana (primitif) Logika (Boolean): Tipe data logika adalah tipe data yang hanya memiliki 2 kemungkinan nilai, yaitu true atau false. Hanya satu tipe data logika pada teknologi Java, yaitu boolean. Berikut contoh penggunaan tipe data boolean : public boolean status = true; public boolean check = 10 < 5 ; // nilai check menjadi // false 21 Tipe Data Komposit Tipe data komposit merupakan tipe data yang disusun dari tipe data sederhana atau tipe komposit lain yang sudah ada. Tipe ini dapat berupa array, string, kelas, dan interface. Khusus untuk String pada Java dikenali sebagai kelas, bukan sebagai array of character. String pada Java diapit oleh tanda petik ganda (“.....”), contoh: String s=”Saya makan nasi”; 22 Promosi dan Casting Promosi adalah proses pengubahan representasi bit variabel primitif dari representasi bit yang lebih rendah ke representasi bit yang lebih tinggi. Promosi dapat terjadi apabila : a. Jika terjadi assigning nilai dari tipe data dengan representasi bit yang lebih kecil ke tipe data dengan representasi bit yang lebih besar, seperti yang diperlihatkan pada contoh berikut ini: short a = 12; int b = a ; 23 Promosi dan Casting b. Jika terjadi assigning nilai dari tipe data integral ke tipe data floating-point, seperti yang diperlihatkan pada contoh int a = 30; float b = a ; 24 Promosi dan Casting Casting tipe merupakan proses pengubahan representasi bit variabel primitif dari representasi bit yang lebih tinggi ke representasi bit yang lebih rendah. Sintak dari type casting adalah sebagai berikut : identifier = (target_type) value ; ket: – identifier = nama variabel yang menjadi tempat penyimpanan nilai; – target_type = tipe data yang diinginkan menjadi tipe data dari value; – value = nilai yang akan di-casting. 25 Promosi dan Casting Berikut contoh casting tipe int num1 = 34; int num2 = 45; short num3 = (short)(num1 + num2 ); System.out.println(num3); 26 Operator di Java • Operator Unary Arti Operator Pre-Increment Operator Contoh Pemakaian ++operand int i = 8 ; int j = ++i; i bernilai 9, j bernilai 9 Post-Increment operand++ int i = 8; int j = i++; Pre-Decrement --operand i bernilai 9, j bernilai 8 int i = 8 ; int j = --i; Post-Increment operand-- i bernilai 7 , j bernilai 7 int i=8; int j = i--; i bernilai 7, j bernilai 8 27 • Operator Binary Arti Operator Operator Contoh Pemakaian Keterangan Penjumlahan + sum=num1 + num2 Pengurangan - diff=num1 - num2 Perkalian * prod=num1 * num2 Pembagian / quot=num1 / num2 jika num1 dan num2 adalah integer, pembagian akan menghasilkan nilai integer tanpa mengikutsertakan sisa, jika terdapat sisa. Sisa % mod=num1 % num2 Hasil operasi modulus adalah sisa dari operasi num1 / num2. (modulus) Hasil operasi modulus memiliki tanda ( +/- ) yang sama dengan operand pertama 28 Prioritas Operator • operator yang berada dalam tanda kurung “( ... )” atau disebut juga parantheses; • operator-operator increment atau decrement; • operator - operator perkalian atau pembagian, yang urutan operasinya dari kiri ke kanan; • operator-operator penjumlahan atau pengurangan, yang urutan operasinya dari kiri ke kanan; 29 • Contoh int c = 12 * 3 +5 / (8 - 3) ; Maka urutan operasinya adalah sebagai berikut : int int int int c c c c = = = = 12 * 3 + 5 / 5 ; 36 + 5 / 5; 36 + 1 ; 37; 30 • Operator Relasi Condition Is equal to (atau “is the same as”) Operator == int i = 1; System.out.println(i==1); : true) // (output != int i = 1; System.out.println(i!=1); : false) // (output Is not equal to (atau “is not the same as”) Example Is less than < Is less than or equal to <= Is greater than > Is greater than or equal to >= int i = 1; System.out.println(i<1); // (output : false) int i = 1; System.out.println(i<=1); //(output : true) int i = 1; System.out.println(i>1); //(output : false) int i = 1; System.out.println(i>=1); // (output : true) 31 Operator kondisional Condition If one condition AND another condition Operator && Example If either condition OR another condition || int i = 1; int j = 2; System.out.println((i<1)||(j>0)); // (output : true) NOT ! int i = 1; System.out.println(!(i<3)); // (output : false) int i = 1; int j = 2; System.out.println((i<1)&&(j>0)); // (output : false) 32 Kata Kunci Final Dalam aplikasi terkadang dibutuhkan suatu variabel yang dicegah untuk dimodifikasi oleh program lainnya. Hal ini dilakukan untuk menjaga agar logika program tetap terjaga. Untuk membuat konstanta, digunakan sebuah modifier final. 33 Kata Kunci Final • Contoh class Lingkaran{ final double pi = 3.14; //konstanta yg nilainya tidak dapat //diubah lagi oleh program lain double jari2; double luas; public double hitungLuas(){ luas = pi*jari2*jari2; return luas; } public double hitungKeliling(){ return 2*pi*jari2; } } 34 Konstruksi Pengambilan Keputusan Konstruksi if Konstruksi if merupakan bentuk konstruksi pengambilan keputusan dengan 2 kemungkinan keputusan. Kemungkinankemungkinan keputusan itu akan dipilih berdasarkan suatu kondisi yang diperiksa. Kondisi tersebut merupakan suatu ekspresi boolean / boolean expression. Sintaks dasarnya: if ( boolean_expression ){ code block; } 35 36 Contoh: public class HasilUjian{ public static void main(String[] args){ int nilai1 = 8; int nilai2 = 7; int nilai3 = 5; float rata_rata = (float)(nilai1 + nilai2 + nilai3)/3; if(rata_rata<5){ System.out.println(“Tidak Lulus”); } System.out.println(“Nilai Rata-rata = ”+rata_rata); } } 37 Konstruksi if..else.. Konstruksi if / else digunakan sebagai konstruksi pengambilan keputusan yang memiliki beberapa kemungkinan keputusan. Sintak dasarnya adalah seperti berikut : if ( boolean_expression_1 ){ code block 1; } else if ( boolean_expression_2 ){ code block 2; } . . . else{ code block n; } 38 39 Contoh public class HasilUjian{ public static void main(String[] args){ int nilai1 = 8; int nilai2 = 7; int nilai3 = 5; float rata_rata = (float)(nilai1 + nilai2 + nilai3)/3; if(rata_rata<5){ System.out.println(“Tidak Lulus”); } else if ((rata_rata>=5) && (rata_rata<6)){ System.out.println(“Harus ikut ujian perbaikan”); } else { // rata_rata >= 6 System.out.println(“Lulus”); } System.out.println(“Nilai Rata-rata = ” + rata_rata); } } 40 Konstruksi Switch Konstruksi switch adalah konstruksi pengambilan keputusan yang mengevaluasi kemungkinan-kemungkinan nilai dari variabel yang dievaluasi. Bentuk umum syntax konstruksi switch adalah sebagai berikut: switch( variabel ) { case nilai_literal_1 : code_block_1; break; case nilai_literal_2 : code_block_2; break; . . default: code_block_default; break; } 41 Keterangan: – switch adalah kata kunci yang mengindikasikan dimulainya konstruksi switch; – variabel adalah variabel yang nilainya akan dievaluasi. variabel hanya dapat bertipe-data char, byte, short, atau int; – case adalah kata kunci yang mengindikasikan sebuah nilai yang diuji. Kombinasi kata kunci case dan nilai_literal disebut case label; – nilai_literal_k adalah nilai yang mungkin akan menjadi nilai variabel. nilai_literal_k tidak dapat berupa variabel, ekspresi, atau method, tetapi dapat merupakan konstanta. k = {default, 1,2,...,n }; – break adalah pernyataan yang sifatnya opsional, yang mengakibatkan aliran program keluar dari blok switch. Jika setelah code_block_k tidak terdapat pernyataan break, maka aliran program akan masuk ke case berikutnya. k = {default, 1,2,3,...,n}; – default adalah kata kunci yang mengindikasikan code_block_default akan dieksekusi jika semua case yang 42 diuji tidak sesuai dengan nilai variabel . Contoh: public class HasilUjian{ public static void main(String[] args){ int nilai1 = 8; int nilai2 = 7; int nilai3 = 5; float rata_rata = (float)(nilai1 + nilai2 + nilai3)/3; switch((int)rata_rata){ case 0 : case 1 : case 2 : case 3 : case 4 : System.out.println(“Tidak Lulus”); break; case 5 : System.out.println(“Ikut ujian perbaikan”); break; default : System.out.println(“Lulus”); break; } System.out.println(“Nilai Rata-rata = ” + rata_rata); } } 43 Konstruksi Pengulangan (looping) While Konstruksi while adalah konstruksi pengulangan yang jumlah perulangannya tergantung pada suatu kondisi logika tertentu. Bentuk umum konstruksi while adalah sebagai berikut : while(boolean_expression){ code_block; } //akhir dari konstruksi while 44 Pada konstruksi while, langkah-langkah proses perulangannya adalah sebagai berikut : • Sistem memeriksa boolean_expression. • Jika nilai boolean_expression adalah true, maka code_block akan dieksekusi. Jika tidak, maka code_block tidak dieksekusi. • Jika di dalam code_block terdapat pernyataan kondisi yang menyebabkan proses harus keluar dari blok while, maka proses akan keluar dari pengulangan, meskipun boolean_expression masih bernilai true. 45 Contoh: public class Contoh1{ public static void main(String[] args){ int num1 = 0; int num2 = 23; int num3 = num1+num2; while(num3 > num1){ num2-=3; num1+=2; num3 = num1+num2; System.out.println(“num1=”+num1+”,num3=“+num3); } } } 46 public class Contoh9_2 { public static void main(String[] args){ int variable = 20; while(true){ System.out.println(“Nilai variable = ”+variable); --variable; if(variable<10){ break; } } } } 47 Konstruksi for Bentuk umum dari konstruksi loop menggunakan for adalah : for(initialize[,initialize];boolean_expression; update[,update]){ code_block; } • bagian inisialisasi, yang berisi pernyataan pemberian nilai awal untuk suatu variabel parameter; • bagian boolean_expression, yang berisi pernyataan logika yang akan diperiksa, sebagai syarat pengulangan terus dilanjutkan. Pengulangan akan dilanjutkan jika nilai ekspresi boolean pada segmen ini bernilai true. • bagian update, yang berisi pernyataan updating parameter ketika satu putaran pada pengulangan selesai dieksekusi. 48 • bagian inisialisasi dapat diisi dengan lebih dari 1 pernyataan inisialisasi; • bagian boolean_expression hanya dapat diisi oleh 1 pernyataan logika; • bagian update dapat diisi dengan lebih dari 1 pernyataan update. 49 Contoh public class Contoh3{ public static void main(String[] args){ for(int variable=20; variable>=10;variable--){ System.out.println(“Nilai variable =”+ variable); } } } 50 public class Contoh4{ public static void main(String[] args){ for(int variable1=20, variable2=0; variable1>=10&&variable2<=5;variable1--,variable2++){ System.out.println(“Nilai variable1= ”+ variable1); System.out.println(“Nilai variable2= ”+variable2); } } } 51 public class Contoh5{ public static void main(String[] args){ int variable = 20; for( ; ; ){ System.out.println(“Nilai variable1= ”+variable); variable--; if(variable<10)break; } } } 52 Konstruksi do…while Konstruksi Pengulangan do/while mirip dengan konstruksi while. Perbedaannya adalah pada urutan prosesnya, yaitu : • Looping dijalankan terlebih dahulu; • Dilakukan pemeriksaan kondisi. public class Contoh6{ public static void main(String[] args){ int variable = 20; do{ System.out.println(“Nilai variable1= ”+ variable); variable--; }while(variable>20); } } 53