You are on page 1of 89

PEMROGRAMAN BERORIENTASI OBJEK Belajar PBO, berarti harus membiasakan diri berpikir secara kelas dan objek setiap

menghadapi masalah. Contoh : Buatlah program untuk menghitung keliling lingkaran dari masukan jari-jarinya ! Masalah tersebut bila disajikan dengan pendekatan kelas dan objek, harus direvisi sebagai berikut : Buatlah kelas lingkaran yang memiliki tanggungjawab mengetahui jari-jarinya dan kelilingnya, lingkaran tersebut dapat melakukan aksi mengembang dan berkerut sesuai dengan panjang jari-jarinya.

1

Sylabi 1. Pengantar 2. Kelas, Method dan Modifier 3. Objek 4. Package
5.

Information Hiding, Encapsulation, Inheritance, dan Polymophism

6. Kelas Inner, Kelas Abstract, dan Interface 7. Exception Handling 8. Kelas-Kelas Dasar 9. MultiThreading

2

BAB I. PENGANTAR (IDENTIFIER, KEYWORD, LITERAL DAN TIPE DATA, OPERATOR, SEPARATOR) 1.1. Pengantar Bahasa java yang telah dirilis : 1. Product Sun Microsystem : j2se, j2me, j2ee 2. Product Borland : JBuilder 3. Product Microsoft : Visual J Spesifikasi j2ee antara lain JDBC, JDOM (untuk XML), Remote Method Invocation, Enterprise Java Beans, Java Messaging, Java Server Pages, Java Servlet, Socket Programming, dan SQLJ. Java/Standard Development Kit (JDK/SDK) merupakan alat-alat utama bagi programmer untuk membuat dan menjalankan java. Development Kit dapat didownload di : http://java.sun.com/product/JDK/index.html atau http://java.sun.com/j2se/1.5/index.html atau http://java.sun.com/cgi-bin/java-ports.cgi

3

Komponen

JDK

antara

lain

compiler(javac),

interpreter(java) disebut juga java virtual machine atau java runtime environment, applet viewer(appletviewer), debugger(jdb), java class library(jcl), header dan stub generator(javah), dan yang paling penting yaitu java documentation(javadoc). Penjelasan penggunaan komponen JDK : 1. Kompilator (javac) Bertugas untuk melaksanakan kompilasi *.java menjadi *.class Syntax umum : javac nama.java 2. Interpreter (java) Bertugas untuk menjalankan bytecode (*.class) Syntax umum : java nama.class 3. Applet Viewer Digunakan untuk menjalanakan applet viewer, namun sekarang sudah digantikan browser. Syntax umum : appletviewer nama.html 4. Java Debugger Bertugas untuk melakukan debugging aplikasi java. Syntax umum : jdb option
4

constructor. Java Documentation Generator Menampilkan dibuat vendor. Syntax umum : javah namaKelas 7. Syntax : javap namaKelas 6.6\docs\junit\index.html pustaka kelas.5.zip. Source Code Java API Source code ini dapat diperoleh dari file src. 5 . dan method standard yang telah 8. Dari hasil instalasi. dokumentasi ini dapat dilihat di pada C:\java\docs\api\index. Java Class File Diassembler (javap) Bertugas membuat daftar method dan attribute public dari suatu kelas.html atau C:\Program Files\NetBeans3. interface. Java Header and Stub Generator Bertugas menerjemahkan bahasa yang ditulis dalam bahasa java menjadi bahasa C.

atau attribute. operator. atau konstanta. atau kelas. atau nama file. Sesuatu tersebut adalah variabel. atau method. serta separator. atau package. Identifier Identifier adalah token yang merepresentasikan nama sesuatu. Ada 5 token dalam bahasa java yaitu identifier. Browser atau applerviewer untuk applet. 6 . Executing menggunakan : a. 3. Keyword java melalui command prompt (dapat juga dari editor teks) b. literal dan tipe data. dan lain-lain. 2. Editing source code menggunakan editor teks. Token Token adalah elemen terkecil di program yang masih memiliki arti. keyword.Untuk pemrogram pemula lingkungan pemrograman java dapat diringkas menjadi : 1. atau interface. Compiling menggunakan keyword javac melalui command promp (dapat juga dari editor teks).

Ada 51 keyword dalam java yaitu : abstract boolean break byte byvalue case catch car class const continue default do double else extends false final finally float for goto if implements import instanceof int interface long native new null package private protected public return short static super switch synchronized this threadsafe throw throws transient true try void while Literal dan Tipe Data Primitif Literal adalah nilai variabel/attribute atau nilai konstanta atau nilai objek data. Angka terdiri dari byte. short. long. double. dan string.Keyword Kata kunci digunakan untuk suatu tujuan tertentu. Bentuk umum : TipeData namaVar = ungkapan_atau_nilai. float. int. karakter. Ada tiga besaran literal dalam java yaitu angka. dan boolean (dianggap angka true = 1 atau false = 0) Semua variabel dan konstanta yang akan digunakan harus dipesan terlebih dahulu dalam deklarasi. 7 .

….TipeData namaVar1.7e+308 false = 0 atau true = 1 Ukuran (bit) 8 16 32 64 16 32 54 8 Operator Operator melakukan komputasi terhadap satu/dua objek data.7e-308 s/d 1. static final PHI=3. namaVar2.4e-038 s/d 3. Operan yang dioperasikan dapat berupa literal. Berikut tabel jangkauan dan ukuran dari semua tipedata sederhana dalam java : Tipe Data Primitif byte short int long char float double boolean Jangkauan -128 s/d 127 -32767 s/d 32767 -2147483648 s/d 2147483647 -9223372036854775808 s/d 9223372036854775807 sebuah Unicode 3. Contoh deklarasi : double a=3.4e+038 1. b=4. [modifier] static final TipeData NAMAKONSTANTA = nilai.sqrt(a*a+b*b). double c = Math.14. variabel.54. atau nilai yang dikirim method. 8 . static final double CM_PER_INC = 2.

^= operator penugasan 17 &=. <<=. -=. != kesamaan. pembagian. /. >>=. ~. |=. >.Berikut tabel dan hirarki operator : Prioritas Kelompok Operator Keterngan 1 . +=. modulus 6 +. >>>= operator penugasan 18 var++. predecrement. penjumlahan. >= pembandingan 9 ==. >>. var-postincrement. [] () Sekaligus 2 ++var. postdecrement Separator Separator menginformasikan ke compiler java mengenai adanya kelompok kode program. % perkalian. <=. instanceof preincrement. instance dari kelas … 3 (type) (casting) 4 ! Not 5 *.then…else… 16 =. unary. %=.. >>> geser untuk bil biner 8 <. *=. ketidaksamaan 10 & and 11 ^ exclusive or 12 | unconditional or 13 && conditional and 14 || conditional or 15 ?: shorthand untuk if. Berikut adalah daftar separator di java : 9 . pengurangn 7 <<. --var. /=.

. titik memisahkan nama-nama package. Deskripsi mengelompokkan parameter method. sehingga berakibat pengabaian sisa instruksi. dan return Kelompok keyword ini pada prinsipnya merupakan kendali jump (variasi lain dari goto). 10 . 1. kurung siku mendeklarasikan tipe array titik koma mengakhiri pernyataan. merangkai pernyataanpernyataan di dalam for. memisahkan kelas dari objek. kurung mengelompokkan nilai-nilai kurawal suatu array. dan objek dari method. Keyword break. mendefinisikan blok kode kelas ataupun kode method. continue. koma memisahkan identifier-identifier di bagian deklarsi variable.Notasi Nama (…) kurung {…} […] : .2.

kemudian eksekusi dilanjutkan ke pernyataan tersebut. System. Dengan keyword ini berarti percabangan/perulangan akan diakhiri. Penggunaan keyword continue Penggunaan keyword ini untuk segera lompat ke perulangan berikutnya. } } 1.out. } while (i <= 9). yaitu untuk keluar dari kendali percabangan switch. Pernyataan-pernyataan setelah setelah blok percabangan/perulangan 11 .1.2.println(i).2. do { i++.1. Contoh : public class ContohBreak { public static void main(String args[]) { int i = 0. dan untuk keluar dari kendali perulangan. Penggunaan keyword break Ada dua penggunaan keyword break.2. if (i==5) break.

println(”iterasi ke : “+i). Contoh : public class contohContinue { public static void main(String args[]) { int i=0. do { i++. Penggunaan keyword return Keyword ini digunakan untuk keluar dari suatu method. if (i==5) break.2.keyword continue dalam blok perulangan saat itu berarti diabaikan. } while(i <= 9). System. pernyataan-pernyataan setelah keyword ini dan 12 .3. } } 1. if (i==3) continue.out.

13 . DAN MODIFIER Apapun konsep yang diimplementasikan di java harus dikapsulkan ke dalam kelas.masih dalam blok method tersebut. kemudian eksekusi dilanjutkan ke pernyataan setelah blok method tersebut. else return(-x) … } } BAB II. Contoh cuplikan program : int abs(int x) { if (x >= 0) return x. KELAS. berarti diabaikan. METHOD.

yaitu kelas standard dan kelas yang didefinisikan sendiri.2. 2.Kelas mendefinisikan sekumpulan objek yang memiliki kesamaan keadaan dan perilaku. Kelas merupakan sarana pengkapsulan kumpulan data dan kumpulan method yang mengoperasikan kumpulan data tersebut. constructor. Anatomi Kelas Bentuk umum struktur anatomi kelas sebagai berikut (modifier1) class NamaKelas (modifier2) { classbody } Classbody terdiri dari attribute. dan method. 14 . Pengertian Kelas Kelas digunakan untuk membuat objek. Kumpulan dari method/kelas standard dalam java dikenal dengan API (Aplication Programming Interface).1. Ada dua kelompok kelas. 2. dan berperan sebagai tipe data dari objek.

Ada 10 keyword yang digunakan sebagai modifier1 dan dikelompokkan menjadi : 1. methodnya. Deklarai Attribute (Variabel Anggota Data) 15 . 3. yaitu extends dan implements. digunakan berdasarkan kebutuhan. default. Sementara static tidak boleh memberi sifat pada interface. 2. protected. 2. private) Modifier final Modifier static Modifier abstract Modifier synchronized Modifier native Modifier storage (transient. dan keyword super tidak boleh digunakan pada method static. volatile) Modifier yang memiliki sifat saling kontradiktif yaitu static dan abstract. 7. Modifier akses (public.3.Modifier pada anatomi kelas. atau attributenya. Modifier menunjukkan sifat-sifat tertentu dari : kelasnya. 5. sifatnya optional. Ada 2 keyword yang sering digunakan sebagai modifier2. 6. 4.

14159265358979323846. Method Method merupakan tingkah laku dari suatu objek atau kelas. [public] [static] final tipedata NAMA_KONSTANTA = nilai. public double x. Bentuk umum deklarasi attribute : [modifier] tipedata namavariabel. jika bersifat static berarti tingkah laku semua objek dalam kelas tersebut. Pasangan tipe dan parameter dapat lebih dari satu (dipisah oleh koma). Method diletakkan di dalam classbody (sebaiknya tidak diletakkan dalam method lain). r. y. } Modifier boleh lebih dari satu (dipisah oleh spasi). Contoh : public class CircleClass { public static final double PI = 3.4. // dan seterusnya } 2.Deklarasi diletakkan di dalam classbody (di luar method). Bentuk umum method : [modifier] tipe_return_value namaMethod(tipe parameter) { methodbody. Bentuk umum method main() sebagai berikut : 16 .

namaKelas.[modifier] tipe_return_value main(String args[]) { methodbody } Ada tiga sintaks pemanggilan suatu method : namaMethod([nilaiParamater]). lewat class tidak boleh Non static Non static 17 . boleh langsung kalau dalam kelas sendiri non static hanya boleh lewat objek.namaMethod([nilaiParamater]). lewat class tidak boleh static boleh lewat objek ataupun class. attribute. namaObjek. Tidak semua member (class. langsung tidak boleh. method) static boleh lewat objek ataupun class. attribute.namaMethod([nilaiParamater]). dan method) dapat diakses method. berikut tabel aksesnya : Method Static Static member (class. boleh langsung kalau dalam kelas sendiri non static hanya boleh lewat objek. langsung tidak boleh.

Method dasar ada dua jenis yaitu getter() dan setter(). } public void setWeight(int newWeight) { //setter weight = newWeight.getWeight()) } 18 . Contoh : public class Dog { private int weight. } } public class TesDog { public static void main(String[] args) { Dog d = new Dog().setWeight(42).println(”Dog d’s weight is ”+d. // input System. // membuat objek d d. // information hiding public int getWeight() { //getter return weight.out.

Tugas dari method-method yang dioverloading tersebut berbeda. serta mengenali return valuenya.2. Java interpreter mampu membedakan method mana yang dieksekusi dengan mengenali tipe parameter yang dilewatkan ke method. Overloading disini adalah mendefinisikan dua atau lebih method di dalam kelas yang sama.1. namun dengan deklarasi parameter yang berbeda.4. dengan nama yang sama. 19 . Overloading terhadap Method Maksud overloading disini bukan overloading terhadap operator sebagaimana C++.

pangkat(10. double b) { double hasil = 1.0.0. int b) { double hasil = 1. public class Perkalian { private double pangkat(int a.out. int b) { double hasil = 1.*. } private double pangkat(double a.308)). //kode program return hasil. //kode program return hasil. //kode program return hasil.0.0.println(kali.lang. double b) { double hasil = 1. } private double pangkat(double a. } private double pangkat(int a. System. // dst untuk data yg lain } } 20 . //kode program return hasil. } public static void main(String[] args) { Perkalian kali = new Perkalian().Contoh overloading terhadap method : import java.

Contoh penggunaan yang eksplisit : class RectangleToy { private double width. public void setRectangle(double width. this. namun nama attribute tersebut dan nama parameter yang dilewatkan pada method tersebut SAMA. height.2.2. } } Pemanggilan contoh ini attribute di yang eksplisit. double height) { this. Keyword this this adalah objek yang langsung digunakan tanpa didahului proses instansiasi. 21 .height = height.4.width = width. biasa digunakan untuk mengatasi panamaan yang sama. Pada parameter method setRectangle() menggunakan nama yang sama dengan attribute di kelas RectangleToy. Keyword ini dapat digunakan secara implicit maupun eksplisit. Penggunaan keyword ini yaitu bila ada attribute (non static) dari suatu kelas akan digunakan method yang berada dalam kelas yang sama.

Contoh pemanggilan implisit : class RectangleToy { private double width. protected. } Tujuan constructor dibuat adalah untuk melakukan inisialisasi yang diperlukan objek baru. private). } } 2. Constructor Pada prinsipnya constructor adalah method yang tidak memiliki return value (secara implisit adalah instant dari kelasnya). hanya saja namanya sama dengan nama kelas. public void setRectangle(double newwidth. height = newheight. height. 22 . Bentuk umum pendefinisian constructor : [modifier] namaConstructor(tipe namaparameter) { constructorBody. default. dan dapat diberi modifier akses (public. double newheight) { width = newwidth.5.

Contoh constructor dan overloadingnya : class PersonToy { String name. public PersonToy() { name = ” ”. addressLine1 = ” ”. addressLine1 = newAddressLine1. addressLine2 = newAddressLine2. city = newCity. int age. age = 0. String addressLine2. age = newAge. String addressLine1. addressLine2 = ” ”. String newAddress1. city = ” ”. String city. String newAddress2. } } 23 . } public PersonToy(String newName. String newCity. int newAge) { name = newName.

2.6. Modifier Modifier1 untuk menentukan sifat dari suatu kelas dan menentukan preveledge (hak akses) dari kelas lain. Modifier2 untuk menentukan relasi (extend atau implements) dengan kelas lainnya. Wilayah modifier akses, dalam bentuk tabel :
Wilayah Akses Di kelas yg sama Beda kelas, di package yg sama Beda kelas, beda package, di kelas turunan Beda kelas, beda package, tidak di kelas turunan public √ √ √ √ protected √ √ √ x default private √ √ √ x x x x x

Wilayah modifier akses tersebut dapat diilustrasikan: public protected default private

2.6.1. Public
24

Menyatakan bahwa kelas/method/attribute tersebut dapat diakses oleh kelas lain dimanapun. 2.6.2. Protected Menyatakan bahwa kelas/method/attribute tersebut dapat diakses oleh kelas lain yang berada dalam satu package atau kelas lain tersebut merupakan turunannya. 2.6.3. Private Menyatakan bahwa kelas tersebut tidak dapat diakses sama sekali oleh kelas lain bahkan juga tidak dapat diturunkan. Berarti attribute-attribute yang private hanya dapat diakses oleh method-method dalam kelas yang sama, kelas lain masih dapat mengakses melalui methodmethod tersebut asal modifiernya public. Pertimbangan suatu attribute dideklarasikan private :
1.

Bila kelas lain tak memerlukan attribute tersebut. nilainya diubah oleh method lain dari kelas lain.
2.6.4.

2. Melindungi suatu attribute dari kemungkinan Final (no extended, no overrided)
25

Menyatakan

bahwa

suatu

kelas

tidak

dapat

menurunkan (extend) kelas lain. Menyatakan bahwa suatu method tidak dapat dioverride oleh method lain. Membentuk suatu attribute menjadi konstanta. 2.6.5. Static (no need instanciation, no overrided) Method dan attribute ada dua jenis, yaitu method dan attribute milik kelas serta method dan attribute milik suatu objek. Method dan attribute milik kelas, diakses melalui tiga cara, pertama melalui nama kelasnya, kedua melalui nama objek yang diinstant dari kelasnya, dan ketiga bebas tanpa didahului nama kelas atau nama objeknya. Method dan attribute milik objek, diakses hanya melalui nama objeknya. Method static tidak bisa dioverride. Method main() harus memiliki modifier static.

26

Modifier static artinya method dan attribute milik kelas, menjadi sifat bersama dari semua objek dalam kelas tersebut (tidak memerlukan instansiasi objek untuk menjalankannya). Contoh System.out.println() bersifat static artinya untuk memanggil method println() tidak harus dilakukan instansiasi dari kelas System. 2.6.6. Abstract (no instanciation, should be overrided) Abstract class adalah kelas murni (tanpa objek) dan tidak boleh memiliki objek (tidak boleh ada instansiasi) serta method-method yang abstract harus disempurnakan oleh kelas turunannya melalui override. Kelas seperti ini biasanya merupakan root suatu struktur kelas. Konsekuensi penggunaan sifat abstract :
1.

Tidak dapat dibuat constructor yang abstract. abstract (kedua sifat saling kontradiktif).

2. Tidak dapat dibuat method yang static dan 3. Tidak diijinkan membuat method yang private dan abstract (kedua sifat ini juga saling kontradiktif).
27

method yang native hanya berupa prototype. Transient (khusus modifier attribute) Java memiliki konsep serialisasi.6.7. Seperti method yang abstract. atau dari suatu workstation ke 28 . 2. Synchronized (khusus modifier method) Pada lingkungan multithread. kondisi tersebut dapat diatur sehingga pada selang waktu tertentu hanya ada satu jalur eksekusi yang diijinkan di method yang synchronized (eksekusi dilakukan secara mutual exclusive). yaitu kemampuan untuk mentransformasikan objek menjadi suatu stream.9. sehingga objek dapat ditransfer dari suatu aplikasi ke aplikasi lainnya.6. implementasi method ini berada di file external (dalam folder yang sama). 2.2.8. Native (khusus modifier method) Modifier ini digunakan untuk memanggil/mengakses method yang ditulis dalam bahasa C/C++. dimungkinkan lebih dari satu jalui eksekusi yang berjalan di kode yang sama.6.

sehingga tidak perlu selalu merujuk ke lokasi memori aslinya. sedangkan yang diwariskan disebut subkelas. saat objek tersebut ditransformasikan menjadi stream. 2.6. Salah satu ketentuan serialisasi adalah tidak boleh ada perubahan nilai attribute suatu objek. Prinsip ini digunakan dalam aplikasi client-server. Attribute tersebut bersifat volatile. Extends Bila terjadi pewarisan.11. namun suatu objek dapat memiliki nilai attribute yang boleh berubah (bersifat transient). Volatile (khusus modifier attribute) Dalam manajemen thread. 29 . java dapat menyimpan nilai suatu attribute (yang sering diakses thread) menjadi cache value. karena nilainya rentan berubah bila diakses oleh lebih dari satu thread.10. kelas yang mewariskan method dan attributenya disebut kelas super.6. 2.workstation lainnya. dan sebaliknya.

12. Implements Kelas yang memilki modifier2 implements artinya kelas tersebut mengimplementasikan satu atau lebih interface. gunakan tanda koma di antara interface-interface tersebut.6. Caranya : [modifier1] class NamaSubKelas extends NamaKelasSuper { classBody } 2. Bila terdapat lebih dari satu interface. NamaInterface2 { classBody } 30 . Caranya : [modifer] class NamaKelas implements NamaInterface1.Kelas yang memiliki modifier ini berarti merupakan subkelas dari suatu kelas super.

terlebih dahulu harus dideklarasikan. Selama tidak bersifat static. penggunaan. kemudian penghancuran. dalam deklarasi mc masih berupa pointer dan belum menunjuk alokasi memori. programmer dapat melakukan sesuatu hanya terhadap objek tertentu dari kelas.1. Keyword new diperlukan untuk membentuk objek tsb sekaligus memanggil constructor. mc = new MyClass() MyClass MyClass ~var1 : int ~var2 : String +method1:int +method2:void 31 .2. 3. Deklarasi dan Pembuatan/Instansiasi Objek MyClass 3. Siklus Hidup Objek Suatu objek di java. Ditentukan variabel mc dengan tipe MyClass. Ilustrasi : MyClass mc. setelah itu mengalami pembuatan.BAB III. OBJEK Pada prinsipnya objek adalah sebuah pointer.

Cara4 : New NamaKelas(”…. Cara2 : NamaKelas namaObjek = new NamaConstructor(). // pembuatan Deklarasi dan pembuatan objek boleh jadi satu dalam suatu kelas.Ada 4 cara untuk melakukan deklarasi dan pembuatan objek (ingat NamaKelas = NamaConstructor) Cara1 : NamaKelas namaObjek.namaMethod(). sedangkan pembuatan/instansiasi objek berada pada kelas2.”). Cara3 : new NamaConstructor(). Deklarasi dan pembuatan objek boleh dipisah di kelas yang berbeda. Cara ini objek diinstansiasi tanpa nama. 32 . Artinya dua proses deklarasi dan pembuatan dijadikan satu. misalnya deklarasi objek di method main() pada kelas1. // deklarasi namaObjek = new NamaConstructor(). tujuannya hanya untuk menjalankan constructor..

Penggunaan Objek Penggunaan objek sebenarnya untuk memanggil method yang merupakan sifat objek tersebut. Objek yang sudah tidak diperlukan lagi akan terdeteksi oleh JVM.3. sehingga secara otomatis dihancurkan oleh garbage collector (bukan oleh programmer).namaMethod([daftarNilaiParameter]).namaAttribute. Bentuk umum : namaObjek. Penghancuran Objek Teknik yang digunakan java untuk menangani objek yang sudah tidak diperlukan lagi disebut garbage collection. namaObjek.4. 33 .3. 3.

Pengaruh Package terhadap Method main() Kelas yang mengandung method main() memilki syarat tidak berada dalam suatu package. dengan struktur dan nama package. 34 .3. Package juga mempengaruhi mekanisme hak akses ke kelas-kelas di dalamnya. 4. Mengkompilasi kelas-kelas sesuai dengan packagenya masing-masing. Mendeklarasikan dan memberi nama package. 2. dan hirarki posisi foldernya di atas package yang diimport.2. Membuat struktur dan nama direktori yang sesuai 3.BAB IV. PACKAGE 4. Pengertian Package Package adalah sarana/cara pengelompokkan dan pengorganisasian kelas-kelas dan interface yang sekelompok menjadi suatu unit tunggal dalam library. 4. Membuat Package Ada tiga langkah untuk membuat package : 1.1.

Deklarasi tersebut akan memberitahukan kompilator. Syarat nama package : 1. Merepresentasikan path dari package tersebut. 5. Contoh package standard : java. 2.4.swing (berisi kelas-kelas untuk membangun aplikasi GUI) 35 . Harus sama dengan nama direktorinya.4. Diawali huruf kecil Menggambarkan kelas-kelas yang dibungkusnya Harus unik (berbeda dengan nama package standard) 4.awt dan javax. ke library manakah suatu kelas dikompilasi dan dirujuk. Mendeklarasikan dan Memberi Nama Package Deklarasi package harus diletakkan pada bagian paling awal (sebelum deklarasi import) dari source code setiap kelas yang dibungkus package tersebut. 3.lang (berisi kelas-kelas fundamental yang sering digunakan). java. Bentuk umum deklarasi package : package namaPackage.

36 .io (berisi kelas-kelas untuk proses input output) 4.6. Compile dan Run Kelas dari suatu Package Selanjutnya masing-masing kelas tersebut dalam package tersebut dikompilasi menjadi byte code (*.5. Package dapat bersarang di package lain.namaPackage2[. 4.image.namaPackage3]]. Membuat Struktur Direktori Pada langkah ini. Kemudian tempatkan kelas-kelas tersebut ke direktori yang bersesuaian (mirip seperti dalam folder).class).awt. Artinya package tersebut siap digunakan. sehingga dapat dibuat hirarki package. Bentuk umum pernyataan package multilevel : package namaPackage1[. buatlah direktori menggunakan file manager (di windows menggunakan explorer) sesuai struktur package dari langkah sebelumnya. menyimpan file-file ke Contoh hirarki package di JDK : package java.java.

7. Kelas yang menggunakan berada dalam direktori (package) yang sama dengan kelas-kelas yang digunakan.text. 2. atau import namaPackage.*. Maka tidak diperlukan import.4. import javax.NamaKelas. Setting Classpath Path hirarki package. Contoh : import java.*. didaftarkan sebagai salah satu nilai variabel lingkungan yang bernama Classpath. Maka pada awal source code di kelas pengguna harus mencantumkan : import namaPackage.DecimalFormat. 4. Kelas yang menggunakan berada dalam direktori (package) yang berbeda dengan kelas-kelas yang digunakan. 37 .8.swing. Menggunakan Package Ada dua cara menggunakan suatu package yaitu : 1.

5.2. Latar Belakang Encapsulation Vendor perangkat lunak computer merahasiakan source code produknya. 38 .1. Information Hiding dan Encapsulation Information Hiding adalah menyembunyikan attribute suatu objek dari objek lain. ENCAPSULATION. INHERITANCE. INFORMATION HIDING. programmer hanya perlu tahu return value dan parameter milik method-methodnya. DAN POLYMORHISM 5.Classpath diset dengan aturan : berawal dari drive (C:\ atau D:\) sampai dengan satu tingkat sebelum kita mendeklarasikan package. BAB V. user hanya diberitahu melalui manual cara menggunakan produknya. Programmer java pun tidak perlu mengetahui bagaimana rinci source code dari modul antarmuka referensi (API). atau hanya perlu tahu parameter milik constructorconstructornya.

} public void setLebar(double lebar) { this. // attribute yg di hide private double tinggi. lebar = 0. double l) { // di encap return p*l. } public void setPanjang(double panjang) { this. // attribute yg di hide private double lebar. // attribute yg di hide public PersegiPanjang() { panjang = 0.panjang = panjang. } public double getPanjang() { return panjang. } 39 . Method dalam kelas yang sama. Attribute maupun method disembunyikan dengan cara memberikan modifier private.Encapsulation adalah menyembunyikan method suatu objek dari objek lain. } private double luas(double p. yang memberikan nilai pada attribute private disebut method setter. // Contoh program Information Hiding dan Encapsulation public class PersegiPanjang{ private double panjang. yang mengambil nilai dari attribute private disebut getter. sedangkan method masih dalam kelas yang sama.lebar = lebar.

println(”Luas : ”+ pp.out.3. System.println(”Panjang : ”+ pp. } } public class MainPersegiPanjang { public static void main(String[] srgs) { PersegiPanjang pp = new PersegiPanjang(). Bentukpewarisan : [modifier] class namaSubKelas extend namaKelasSuper { // classBody } 40 .setPanjang(10). System.getLuas()).println(”Lebar : ”+ pp. System. dan kelas B merupakan turunan kelas A. jika kelas C merupakan turunan kelas B. pp.setLebar(20).out.out. Inheritance Semua attribute dan method dari suatu kelas super dapat diwariskan ke subkelas. lebar).public double getLebar() { return lebar.getLebar()). Dalam hirarki kelas. pp. } } 5. } public double getLuas() { return luas(panjang.getPanjang()). maka otomatis attribute dan method kelas A juga diwariskan kelas C.

4. Modifikasi yang dilakukan. seorang programmer ingin memodifikasi suatu attribute atau method yang dimanfaatkan subkelas. 41 . maka semua attribute dan method yang pernah dibuat dan butuhkan kelas lain. harus ditulis ulang seluruhnya. maka dilakukan modifikasi attribute dan method tersebut pada kelas supernya. Dengan inheritance. tipe parameter. Overrriding Attribute dan Method Overriding adalah kemampuan suatu subkelas untuk memodifikasi attribute dan method milik kelas supernya (tentu yang memiliki sifat private atau final tidak biasa dilakukan overriding). tipe return value. Manfaat Pewarisan Tanpa inheritance. ataupun lingkungan pemrosesan datanya. 5. misalnya jumlah parameter.5.5.

oks.methodAsli(). osk. } } 42 .methodAsli().out. // yg dipanggil milik kelas super } public static void main(String[] args) { SubKelas osk = new SubKelas(). } public void methodPemanggil() { System.out. osk. super.println(”Method milik KelasSuper jalan”).methodAsli().println(”Method pemanggil methodAsli jln”). } } class SubKelas extends KelasSuper { public void methodAsli() { System.// Contoh program overriding class KelasSuper { public void methodAsli() { System. } public static void main(String[] args) { KelasSuper oks = new KelasSuper().methodPemanggil().println(”Method yg overrided jalan”).out.

namaMethod(). maka cara pemanggilan method (non static) milik kelas super : super. sedangkan cara kedua.5 Sehingga dapat dibedakan namaMethod() milik siapa yang dipanggil. Jika ada overriding. super(tipe parameter). akan memanggil constructor kelas supernya yang sesuai dengan parameter tersebut. akan memanggil constructor default milik kelas supernya. Menggunakan Method dan Constructor Kelas Super Java tidak memperbolehkan subkelas memanggil contructor milik kelas supernya dengan cara hanya memanggil namanya.5. // perhatikan contoh pada 5. misal nama methodnya namaMethod(). 43 . Cara yang pertama.6. Cara yang benar : super().

} } class Sedih extends EkspresiWajah{ public String respons() { return(”hik hik ngeee ngeee ngeee”). namun contoh berikut memvisualisaikan method respon() nama sama. Method-method overloading masih dalam kelas yang sama.5.7. } } class Gembira extends EkspresiWajah{ public String respons() { return(”ha ha ha…”). 44 . Polymorphism Polymorphism artinya bersifat poly morphy (memiliki banyak bentuk). } } class Marah extends EkspresiWajah{ public String respons() { return(”Hai kurang ajar…!”). namun pada kelas yang berbeda dapat memilki isi method yang berbeda pula tergantung kelasnya. Contoh pertama : class EkspresiWajah{ public String respons() { return(”Perhatikan ekspresi wajah saya”).

respons()). protected Employee(String n. salary = s. arrEkspresi[1] = objGembira. arrEkspresi[2] = objSedih. arrEkspresi[3] = objMarah.respons()).out. EkspresiWajah[] arrEkspresi = new EkspresiWajah[4]. Marah objMarah = new Marah(). System.println(”Ekspresi[3] : ”+arrEkspresi[3].respons()). System. double s) { name = n. Gembira objGembira = new Gembira().println(”Ekspresi[1] : ”+arrEkspresi[1]. Sedih objSedih = new Sedih(). private double salary. } protected String getDetails() { 45 .out. System.out. System.println(”Ekspresi[2] : ”+arrEkspresi[2].respons()).println(”Ekspresi[0] : ”+arrEkspresi[0]. arrEkspresi[0] = objEkspresi.} } class MainEkspresiWajah{ public static void main(String args[]) { EkspresiWajah objEkspresi = new EkspresiWajah().out. } } Contoh kedua : public class Employee { private String name.

out. department = dep. String dep) { super(nama. public Manager(String nama.”Informatika”).println(”Data employee :\n”+e.1200000).println(”Coba di Manager”).getDetails()). } public void cetak() { System.getDetails()+ ”\nDepartment : } public void cetak() { System.println(”coba di Employee”).out.getDetails()). super.out. } } 46 . System. System. em. Employee em = new Manager(”Ali”.cetak(). } } public class View { public static void main(String[] args) { Employee e = new Employee(”Ali”.1200000. } public String getDepartment() { return department. } public String getDetails() { return ”+getDepartment(). double salary. } } public class Manager extends Employee { private String department.out.println(”Data manager :\n”+em. salary).return ”Name : ”+name+ ”\nSalary : ”+salary.

47 . Kelas sisipan ini disebut kelas Inner. atau default. KELAS ABSTRCT. maka yang dijalankan adalah method milik kelas Manager. yaitu Luar. Prioritasnya adalah kelas Manager kemudian kelas Employee. ataupun private. KELAS INNER. Beberapa ketentuan kelas Inner : a) Kelas Luar yang mengandung kelas Inner.class b) Kelas Inner boleh tidak diberi nama. DAN INTERFACE 6. c) Kelas Inner dapat diberi modifier akses public. bila dikompilasi akan menghasilkan dua file *. BAB VI.class dan Luar$Inner. yang disebut Anonymous Inner. Kelas Inner Java membolehkan programmer menyisipkan suatu kelas ke dalam kelas lainnya.Catatan : Kalau method cetak() di kelas Employee dan kelas Manager ada. Kelas Inner berguna untuk mendukung suatu proses yang akan dijalankan oleh kelas luarnya.1. atau protected.class.

48 . Luar. dan objek kelas Inner adalah b.this. Kalau objek kelas Luar adalah a.new Inner(). 6. Handler merupakan bagian program yang akan memproses event-event yang dipicu ketika user berinteraksi dengan komponen-komponen GUI. maka sintaks yang benar adalah : Luar a = new Luar().d) Untuk mengakses referensi this dari kelas luar digunakan bentuk NamaKelasLuar. e) Kelas Luar ikut bertanggung-jawab dalam instansiasi kelas Inner (yang non static).2. (Artinya kelas Inner tidak dapat mengakses attribute ataupun method non static milik kelas Luarnya). Menggunakan Kelas Inner Kelas Inner lazim digunakan untuk membuat handler di method main() pada suatu aplikasi GUI.Inner b = a. maka objek milik kelas Inner dapat dibuat sendiri tanpa melalui kelas Luarnya. f) Jika kelas Inner bersifat static.

Container c = getContentPane(). public class DemoJButtonInner extends JFrame { private JButton btn.showMessageDialog(null.Contoh program berikut adalah aplikasi Button sederhana dengan handlernya dari kelas Inner : import java. } }). import java.*. btn = new JButton(”Button”). import javax.addActionListener(handler). // membuat event handler ButtonHandler handler = new ButtonHandler().swing. 49 .addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent we) { System.exit(0).awt. } // kelas Inner untuk Event Handling pada button private class ButtonHandler implements ActionListener { public void actionPerformed(ActionEvent ae) { JOptionPane. setSize(275. app. btn.*.setLayout(new FlowLayout()). c. public DemoJButtonInner { super(”Demo JButton Inner Class”). show(). } public static void main(String args[]) { DemoJButtonInner app = new DemoJButtonInner(). 100).*.event. c.add(btn).awt.

namun tidak mungkin dapat menginstansiasi kelas MahlukHidup. kelas Hewan.1. Analogi Method yang Abstract Bila kelas MahlukHidup mempunyai method bernafas. heri. heru. Dibutuhkan kelas turunan yang lebih khusus. 6. Bentuk umum : [modifier] abstract class NamaKelas { // deklarasi attribute // definisi/prototype method } 6. sebab kelas tersebut terlalu umum (abstract). dan satu/lebih method-methodnya yang abstract harus diimplementasikan (override) oleh kelas turunannya. } } } 6. dan kelas Manusia. kelas seperti inilah yang disebut kelas abstract.3.”anda telah menekan” +ae. maka tidak dapat ditentukan cara suatu mahluk hidup tersebut 50 .Kelas Abstract Kelas abstract adalah kelas murni yang tidak boleh memiliki objek. misal kelas Dosen dapat diinstansiasi menjadi budi.getActionCommand()+”\n” +”Handler button ini pakai kelas Inner”).3.2. Analogi Kelas yang Abstract Suatu kelas dapat diinstansiasi menjadi objek.3.

bernafas (dengan paru-paru. juga harus memiliki method yang sesuai dengan pekerjaannya. atau stomata). method seperti inilah yang disebut method abstract. 6. dosen. tentara. dan sebagainya.5. Deklarasi Interface 51 . tentunya manusia-manusia tersebut selain harus memiliki method standard sebagai seorang manusia. Dalam kehidupan nyata dapat diketahui ada manusia yang bekerja sebagai da’i. pengacara. Dibutuhkan kelas turunan yang khusus dan method override dari method yang abstract. insang. Interface Interface adalah kelas yang paling abstract. 6.1. 6. penyanyi.4. yang berisi daftar deklarasi method (seluruh method belum memiliki implementasi).4. harus dibuat kelas yang merupakan turunan kelas manusia yang mengimplementasikan interface dosen. Analogi Interface Interface dapat dianalogikan sebagai kontrak yang dapat dipakai oleh setiap kelas. Dengan demikian untuk membuat objek seorang budi bekerja sebagai dosen.

public void static makan() { System. jumKaki = kaki. protected int jumKaki. } 52 . protected boolean bisaTerbang = false. bisaTerbang = terbang. public Hewan(String nama.println(”jumlah kaki : ”+jumKaki).println(”nama : ”+nama).out. nyam. System.nama = nama. System. int kaki.out.7. } public abstract void bersuara(). boolean terbang) { this.out.out. Implementasi Interface Bentuk umum implementasi : [modifier] class NamaKelas implements NamaInterface { // penggunaan konstanta // implementasi method } 6. } public void isHewan() { System.println(”bisa terbang : ”+bisaTerbang).6. Contoh Abstract Class dan Interface abstract class Hewan { protected String nama. nyam”).println(”nyam.Bentuk umum deklarasi: [modifier] interface NamaInterface { // deklarasi konstanta // deklarasi method } // catatan : modifier static tidak boleh digunakan dalam interface 6.

} interface Manusia { public void menyanyi(). } class Perkutut extends Hewan { public Perkutut() super(”perkutut”.true).println(”\nemoh….println(”\ncuit. } public void bersuara() { System. cuit.isHewan().emoh…”). s. false). } public static void main(String[] args) { Perkutut p = new Perkutut(). } } //************************************** class Sapi extends Hewan { public Sapi() { super(”sapi”. 4. } public static void main(String[] args) { Sapi s = new Sapi().bersuara(). } } 53 .isHewan(). p.2. s.out. } public void bersuara() { System.out. p.bersuara(). public void ketawa(). cuit”).

} public void ketawa() { System.makan(). s.makan().out.println(”nye. kek”).menyanyi().makan2(). } public void makan2() { super. } public static void makan() { System. s.bersuara(). s.println(”uenak tenan…”).class SpongeBob extends Hewan implements Manusia { public SpongeBob() { super(”sponge bob”.out. wik. } public void bersuara() { System.isHewan(). 2. nye.println(”\nhallo patrict…. s. s. nye..out. wik. wik”). Hewan.”).out.println(”kek. } public static void main(String[] args) { SpongeBob = s new SpongeBob(). false). kek.ketawa(). } public void menyanyi() { System. makan() } 54 .

} 6. namun interface berperan. Bagaimana kalau dibutuhkan suatu kelas yang attribute dan methodnya berasal dari lebih dari satu kelas super ? disinilah keterbatasan inheritance. class model objek mendefinisikan attribute dan method secara rinci dan konkret boleh 55 . Interface vs Class Perbandingan interface dengan class : komponen interface definisi daftar deklarasi method kandungan isi/implementasi semua informasi methodnya berada di luar interface ini instansiasi tidak boleh 6. karena dalam interface bisa dimasukkan method-method dari beberapa library referensi tanpa harus menurunkannya.9.8. Interface vs Inheritance Inheritance adalah proses pewarisan attribute dan method dari satu kelas super kepada satu/lebih subkelas.

Perbedaan interface dangan kelas abstract adalah sebagai berikut : komponen interface attribute hanya berupa konstanta method berupa deklarasi syntax seluruhnya abstract (berupa deklarasi) abstract class bebas memilki tipe data apa saja boleh deklarasi.10. NamaInterface2. 6. … { //interfaceBody } Nama-nama interface tersebut dapat dijadikan tipe data attribute ataupun tipe data parameter dalam kelas yang menggunakan. Aplikasi Interface 56 .11. boleh berupa method lengkap sebagian abstract 6. Interface vs Abstract Class Interface dan kelas abstract memilki kesamaan samasama tidak boleh instansiasi objek.Syntax kelas yang menggunakan lebih dari satu interface : [modifier] class NamaKelas implements NamaInterface1.

event. } public static void main(String args[]) { AppJButton app = new AppJButton(). btn.*. Container c = getContentPane(). c. import java.setLayout(new FlowLayout()). btn = new JButton(”Button”). perhatikan contoh berikut : //membuat aplikasi JButton implementasi interface : import java. setSize(275. public AppJButton() // constructor super(”Demo JButton Interface”).addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent we) { System.add(btn).awt.swing. } public void actionPerformed(ActionEvent ae) { 57 .awt.addActionListener(this). } }). public class AppJButton extends JFrame implements ActionListener { private JButton btn. App.Interface sering digunakan untuk menambah event handling pada program aplikasi GUI. show(). c.*. 100).exit(0).*. import javax.

Jenis-Jenis Exception Dalam java. 7.JOptionPane.1.2. exception merupakan objek dari subkelas yang diturunkan dari kelas Throwable.Pendahuluan Error dalam pemrograman dibagi dalam tiga katagori yaitu syntax error (saat kompilasi). } } BAB VII.getActionCommand()+”\n”+ ”Handler Button ini mengimplementasikan interface”).1.object. run time error. Exception dipicu oleh run time error dan digunakan sebagai sarana melaporkan kondisi-kondisi kesalahan.showMessageDialog(null. ”Anda telah menekan : ”+ e. EXCEPTION HANDLING 7.lang. 7. Kelas Throwable ini terdapat dalam package java. dan logic error (output belum sesuai dengan yang diharapkan).2. Kelompok Kelas Error 58 .

7. Disamping itu programmer dibolehkan membuat exception sendiri dengan cara extends atau implements kelas Exception. dan AWTError.Error ini bersifat fatal sehingga sistem tidak dapat dimanipulasi untuk diperbaiki. apakah akan ditangani atau dilempar. contoh kelas: LinkageError. Kelompok Kelas Exception Jenis error ini masih dapat diantisipasi dengan menyisipkan statement tambahan untuk mendeteksi data yang berpotensi menimbulkan error.2. Checked Exception No Exception Deskripsi 1 ClassNotFoundException Kelas tidak ditemukan 2 CloneNotSupportedException melakukan clone objek yang tidak mengimplementasikan interface Cloneable 3 IllegalAccessException Pengaksesan ke kelas 59 .2. namun ada pula exception yang akan tidak diperiksa interpreter. Ada kelompok exception yang diperiksa oleh interpreter. VirtualMachineError.

4 5 6 7 InstantiationException InterruptedException NoSuchFieldException NoSuchMethodException ditolak Menciptakan objek dari kelas abtract ataupun dari interface Thread telah diinterupsi oleh thread lain Field yang diminta tidak ada Method yang diminta tidak ada Deskripsi Kesalahan Aritmatik seperti pembagian dengan nol Index array di luar batas Pemberian nilai ke elemen array tidak sesuai dengan tipenya Cast yang tidak sah Argument illegal Operasi monitor illegal seperti menunggu di thread yang tidak terkunci Lingkungan atau aplikasi state yang tidak benar Operasi yang diminta tidak kompatibel dengan state thread saat itu Indeks di luar batas Array diciptakan dengan ukuran negatif Penggunan null yang tidak sah Konversi yang tidak sah dari string ke format numerik Melanggar aturan security 60 Uncheked Exception No 1 2 3 4 5 6 7 8 9 10 11 12 13 Exception AritmaticException ArrayIndexOutBoundsException ArrayStoreException ClassCastException IllegalArgumentException IllegalMonitorStateException IllegalStateException IllegalThreadStateException IndexOutOfBoundException NegativeArraySizeException NullPointerException NumberFormatException SecurityException .

throw namaObjek. 61 . ClassNotFoundException { } public void beriPinjaman() throws TolakException{ } 2. yaitu IOException dan AWTException. Mengantisipasi Exception Diperlukan tiga langkah berikut ini untuk mengantisipasi exception : 1.3. Mendeklarasikan Exception Bentuk umum : [modifier] returntype namaMethod() throws tipeException{ } Contoh : public void operasiMatematika() throws IOException. Melempar Exception Bentuk umum : TipeException namaObjek = new TipeException.14 15 StringIndexOutOfBounds UnsupportedOperationException Index di luar batas string Ditemukan operasi yang tidak didukung Dua Exception yang belum dikelompokkan. Diringkas menjadi : throw namaObjek TipeException. 7.

dapat mempunyai beberapa blok yang menangkap setiap jenis exception. throw t. Contoh : TolakException t = new TolakException(”lagi pelit”). 3. Menangkap Exception Penangkapan runtime error. Bentuk umum : try { // pemanggilan method yg mungkin menghasilkan exception // blok statement yg mungkin menghasilkan exception } catch(TipeException1 namaObjek) { // penanganan salah-satu jenis exception } catch(TipeException2 namaObjek) { // penanganan salah-satu jenis exception } catch(TipeExceptionN namaObjek) { // penanganan salah-satu jenis exception } finally { // blok yang harus dieksekusi 62 . Diringkas menjadi : throw new TolakException(”lagi pelit!”).atau throw new TipeException().

pertama jika tidak terjadi exception (tidak ada blok catch yang dieksekusi). ketiga jika terjadi exception pada blok tersarang. maka salah satu blok catch dieksekusi. } … } Method B { … try { …. kedua jika exception terjadi pada blok method tunggal (salah-satu blok catch dieksekusi).4. Jika terjadi exception pada blok try. kemudian blok finally dieksekusi. } … } 63 . } catch(Exception1 obj1) { proses Obj1.} Jika pada blok try tidak terjadi exception. 7. } catch(Exception2 obj2) { proses Obj2. Method A { … try { … memanggil method B. maka blok catch tidak ada yang dieksekusi dan segera blok finally yang dieksekusi. Mekanisme Mengantisipasi Exception Ada tiga kemungkinan skenario exception.

Menampilkan Pesan Exception Beberapa method standard yang dapat digunakan untuk menampilkan pesan exception merupakan anggota dari kelas java.lang.7.Throwable. No Method Pesan Exception 1 getMessage() Deskripsi Mengembalikan nilai string yang berisi pesan rinci tentang objek Throwable yang mengalami exception Mengembalikan nilai string yang berisi pesan singkat tentang objek yang mengalami exception Menampilkan pesan exception lokal (yang terjadi pada subkelas saja) Method ini bersifat void. dan hanya mencetak informasi tentang objek Throwable 2 toString() 3 4 getLocalizedMessage() printStackTrace() 64 .5.

Kelas ini terdapat dalam java.1. int hibyte. // cara1 65 . // cara1 String(String value).BAB VIII. //cara6 String(StringBuffer buffer). // cara3 String(byte ascii[]. // cara7 Contoh penggunaan Constructor tersebut : String aString1 = new String(). int hibyte). // cara2 String(char value[]). suatu string adalah objek. Ada dua kelas string yang akan dibahas yaitu kelas String. // cara4 String(char value[]. int count). int offset.lang. Sesuai dengan kuantitas constructornya. ada 7 cara untuk membuat objek String: String(). Kelas String Kelas String memodelkan deretan karakter. KELAS-KELAS DASAR Ingat di java. int offset. 8. kelas StringBuffer. int count). // cara5 String(byte ascii[].

int lastIndexOf(int i. int indexOf(int i. // HELL Ada 33 method yang digunakan untuk melakukan 8 macam operasi pada kelas String. int indexOf(String str).4). boolean startsWith(String prefix. int lastIndexOf(String str. int lastIndexOf(String str). int indexOf(int i). // cara5 System. char charAt(int index). 66 .out. int lastIndexOf(int i). yaitu : int length. int fromIndex).’E’.println(aString4). int indexOf(String str. int fromIndex). boolean startsWith(String prefix).’L’. // cara3 String aString4 = new String(aArray. int fromIndex). boolean endsWith(String suffix).’O’}.0. int tooffset). int fromIndex). String aString3 = new String(aArray).’L’. // cara2 char aArray[] = {’H’.String aString2 = new String(”haii…”).

boolean equelsIgnoreCase(String aString). int compareTo(Object anObject). int compareTo(String str). static String valueOf(int i). yaitu : 67 . static String valueOf(float f). String toUpperCase(). String toLowerCase(). static String valueOf(long l). int offset. String replace(char oldChar.String substring(int beginIndex). boolean equels(Object anObject). Ada 8 operasi pada kelas String. String concat(String s). static String valueOf(Object anObject). static String valueOf(char ch). static String valueOf(double d). int endIndex). static String valueOf(char ch[]). char newChar). int count). String substring(int beginIndex. static String valueOf(char ch[]. String trim(). static String valueOf(boolean b).

compareTo(s2). hasilnya true // System.equels(s2)). String s2 = new String(”abcdz”). // 12 char ch = saran.out. harus mengunakan operator ==.println(s1. String saran = new String(”Raihlah scjp”). Membuat dan menginisialisasi String String saran = ”Raihlah scjp”. 2. jika s1 < s2 hasilnya > 0.println(s1. Membandingkan dua String String s1 = new String(”abcd”). jika s1 sama dengan s2 hasilnya < 0. Membaca character dalam String int len = saran. jika s1 > s2 Catatan : Membandingkan nilai-nilai di attribute int. namun operator ini tidak berlaku untuk objek- 68 . hasilnya 0.equelsIgnoreCase(”ABCFJ”). // true System.out.charAt(3).out.length().println(s1. System. float. long. // i 3.1. dan double.

out. String s2 = s2.startWith(”Nilai”). // index1 berisi posisi ’a’ int index2 = aString. Mencari character dan substring String aString = new String(”Nilai objek milik kelas String”).println(s2.out. Jika contoh di atas dilakukan s1==s2. // index2 berisi posisi kemunculan kedua huruf ’a’ int index3 = aString. // index3 berisi lokasi karakter ’g’ pada aString int index4 = aString.index1+1).toUpperCase()). // true 69 . String s2 = new String(s1+ ” sendiri”).println(s3). int index1 = aString.println(s2.indexOf(”String”).indexOf(’a’.indexOf(”i”). Concatenation dua String String s1 = new String(”Saya belajar j2se”). System. Mengubah character kecil menjadi capital String s1 = new String(”Raihlah scjp \n”).out. 6. 5.trim().indexOf(’a’). maka hasilnya selalu false. // Raihlah scjp (tanpa spasi) System. String s3 = new String(s2+ ” di rumah”). // index4 berisi lokasi karakter i pada aString boolean hasil1 = aString.objek milik kelas String.toLowerCase()). System. 4.

println(strBaru3). Method-method pada kelas ini. 10). Kelas StringBuffer Kelas ini bisa menciptakan objek berupa string yang dapat berubah (padahal objek pada kelas String berupa konstanta).substring(5. System. Ada tiga constructor milik kelas StringBuffer : public StringBuffer(). 70 . dapat beroperasi langsung pada buffer yang berisi string.’m’). // strBaru2 berisi string mulai index ke-5 sampai ke-10 8. String strBaru1 = strAsli.endsWith(”String”). public StringBuffer(int n).boolean hasil = aString.replace(’S’. // maya belajar j2se 8.2. // strBaru1 berisi string mulai index ke-12 String strBaru2 = strAsli.substring(12). Mengambil suatu substring String strAsli = new String(”Saya belajar j2se”). // true 7.out. Menggantikan suatu character dalam String String strBaru3 = strAsli.

//14 System.println(”Panjang = ”+ s1.out. System.public StringBuffer(String str).length()).setLength(3). // menciptakan objek StringBuffer sepanjang String s1 // dengan karakter inisial 16 karakter String sb3 = new StringBuffer(s1). 71 .println(”Kapasitas = ”+ s1. Beberapa method yang digunakan untuk memodifikasi isi buffer yang berisi string. // menciptakan objek StringBuffer yg panjangnya 32 char // diinisialisasi dengan spasi String sb2 = new StringBuffer(32).out. StringBuffer s1 = new StringBuffer(14).capacity()). // 0 s1. Contoh penggunaan constructor : String s1 = new String(”Belajar StringBuffer”). // menciptakan objek StringBuffer yang kosong // dengan karakter inisial sebanyak 16 karakter String sb1 = new StringBuffer().

’r’).println(s1). Object obj).capacity()).println(”Kapasitas = ”+ s1. synchronized StringBuffer append(char str[]. // S s1.charAt(9). // Bel System. // 3 Contoh penggunaan method charAt() dan setCharAt() : StringBuffer s1 = new StringBuffer(”Belajar StringBuffer”).length()). int len). synchronized StringBuffer insert(int offset. System.out.out. StringBuffer append(long l). char c1 = s1. // Belrjar StringBuffer Beberapa overloading method append() dan insert() : synchronized StringBuffer append(Object obj).setCharAt(4.println(”Panjang = ”+ s1.System. 72 . System. StringBuffer append(int i). synchronized StringBuffer insert(int offset.println(c1).out. //14 System.out. int offset. StringBuffer append(boolean b). StringBuffer append(float f). synchronized StringBuffer append(char ch). String str). synchronized StringBuffer append(char ch[]).out. synchronized StringBuffer append(String str).println(s1). StringBuffer append(double d).

System.append(” depan”). boolean b). System. StringBuffer insert(int offset. Contoh pengunaan method append() dan insert() : StringBuffer sb1 = new StringBuffer(”2 + 2 = ”). StringBuffer sb2 = new StringBuffer(”Raihlah scjp”). Kelas Math dan Kelas StrictMath Kelas Math berisi sekumpulan method dan konstanta matematika. char ch[]). int i). 73 .println(sb2).append(2+2). sb1. dan semua attribute dan methodnya bersifat static. ”tahun”).out.insert(14. sb2. 8. StringBuffer insert(int offset.println(sb1). StringBuffer insert(int offset. char ch). sb2. double d).out. StringBuffer insert(int offset. Kelas ini bersifat final (tidak dapat diturunkan. dan tidak dapat melakukan instansiasi). synchronized StringBuffer insert(int offset.3.synchronized StringBuffer insert(int offset. float f).

static double acos(double d). static double asin(double d). static double tan(double d). // d static double pow(double a. serupa dengan kelas Math. static double cos(double d). // ln(d). static double toDegrees(double sudut). double b). static double sin(double d). static double atan(double d). static double sqrt(double d). Method-method di kelas Math : static double toRadians(double sudut). // pembulatan ke atas 74 . // a pangkat b static double ceil(double d).Java2 mulai versi1.3 menambah kelas StrinctMath yang berisi sekumpulan method matematika yang lengkap. // e pangkat d static double log(double d). Perbedaannya adalah StricMath dijamin menghasilkan hasil identik yang presisi diimplementasikan di Java manapun. static double exp(double d).

float b). Math. int b). static float min(float a. static float max(float a. long b).7…. double b). static double min(double a. Lanjutan method-method di kelas Math : static int abs(int i). // pembulatan ke int terdekat static double atan2(double a. // pembulatan biasa static long round(double d). static int max(int a.E=2. double b).static double floor(double d). double b). float b). static double max(double a.14…. // cartesius ke polar static synchronized double random(). long b). static long min(long a.PI=3. static float abs(float f). // pembulatan biasa static double rint(double d). static long abs(long l). int b). 75 . static double abs(double d). static int min(int a. static long max(long a. //pembulatan ke bawah static int round(float f). Math.

sqrt(d1).125.3). 3. // hasilnya 7 double d9 = Math. 76 . int i = Math.3).3.pow(d1. double d4 = Math. // hasilnya -7 double d8 = Math.sin(Math.log(d1).ceil(-7. // hasilnya -8 double d10 = 37.3).3).exp(d1).floor(7. double d3 = Math. long l = Math.0).PI/2). double d5 = Math.floor(-7.Penggunaan method-method pada kelas Math : double d = Math.ceil(7. double d2 = Math.round((float) d10). // hasilnya 8 double d7 = Math.round(d10). double d1 = 12. double d6 = Math.

d12 = 18. int. Short. Kelas-Kelas Tipe Data Wrapper Sembilan tipe data dasar (boolean. Character. float. d12). Penting untuk diperhatikan bahwa tipe data wrapper dan tipe data dasar tidak saling menggantikan. double. 77 . double d13 = Math. Number. Void. long. Float. static double random(). d12). void) di java tidak diimplementasikan sebagai kelas. Double.double d11 = 14. Long. Jadi kelas tipe data wrapper di java ada sepuluh yaitu Boolean. Integer.min(d11. Byte.0 <=hasil<=1. byte. char.2.0 8. // 0. yang namanya serupa namun diawali huruf kapital.4. double d14 = Math. Tipe data dasar diperoleh dari tipe data wrapper dengan cara memanggil method di tipe data wrapper.max(d11. Kelas wrapper bertindak sebagai versi kelas dari tipe data dasar.5. short.

78 . int intValue(). Kelas-kelas tipe data wrapper menyediakan versi objek dari tipe data dasar. integer. short shortValue(). double doubleValue(). Method-method dari kelas Number : byte byteValue(). maka dimungkinkan menambah method-method untuk masing-masing tipe. byte. float. long longValue(). 8.1. Ada enam subkelas kongkret yang menyimpan nilainilai secara eksplisit masing-masing tipe data dasar yaitu double. jadi jika membutuhkan pass by reference harus memanfaatkan kelas tipe data wrapper.4. short. Kelas Number Kelas ini bersifat abstract serta mendefinisikan super kelas yang diimplementasikan oleh kelas-kelas yang membungkus tipe data dasar.Tipe data dasar dilewatkan ke method dengan pass by value. float floatValue(). dan long.

dan memiliki dua constructor yaitu: Boolean(Boolean boolValue). Kelas Character Kelas ini membungkus tipe data dasar dan memiliki beberapa method : static int digit(char ch.TRUE dan Boolean. Boolean(String boolString). Dua konstanta pada kelas ini yaitu Boolean. 8.4.3. Kelas Boolean Kelas ini membungkus tipe data dasar Boolean. Static boolean valueOf(String boolString).FALSE.2. contoh : char ch1 = ’4’. static boolean getBoolean(String propertyName). int hashCode(). int radix).4. String toString(). boolean equels(Object boolObj). Method-method di kelas ini adalah : boolean booleanValue().8. 79 .

digit(ch2.isSpace(’\t’). contoh : int i = 9.isDigit(’7’). contoh : boolean isDigit = Character.char ch2 = ’c’. static boolean isWhitespace(char ch). char c = Character. boolean isLower = Character. static boolean isUnicodeIdentifierStart(char ch). int four = Character. static boolean isDigit(char ch). contoh : Character c = new Character(’g’). static boolean isLetterOrDigit(char ch). // true static boolean isSpace(char ch). contoh : boolean isSpace = Character. static boolean isLetter(char ch).isLowerCase(c). static boolean isUnicodeIdentifierPart(char ch). int radix). static boolean isLowerCase(char ch). static boolean isTitleCase(char ch). // hasilnya true static boolean isIdentifierIgnorable(char ch). 10). 12). //hasilnya karakter ’9’ static boolean isDefined(char ch).digit(ch1. static boolean isJavaIdentifierPart(char ch). 10).forDigit(i.//hasilnya true static boolean isUpperCase(char ch). // hasilnya hexa c static char forDigit(int digit. 80 . // hasilnya bil 4 int twelve = Character.

81 . // hasilnya m static char toTitleCase(char ch).static char toLowerCase(char ch). Kelas Byte. static char toUpperCase(char ch).toLowerCase(’M’). System. 8. kelas Character memiliki attribute yang bersifat static final (konstanta). contoh : char ch = Character.4. Short. int compareTo(Object obj). // objek kelas Byte menjadi nilai double // membandingkan dua objek milik kelas Byte boolean equels(Object obj). contoh : char ch = Character. static Byte decode(String str) throws NumberFormatException doubleValue(). yaitu MIN_RADIX (basis 2) dan MAX_RADIX (basis 36).println(ch).println(ch). System.toUpperCase(’n’).out. Integer.out. dan Long Method-method di kelas Byte adalah : byte byteValue(). // hasilnya N Saat konversi dari numerik ke karakter atau sebaiknya. // objek kelas Byte menjadi nilai byte // membandingkan dua objek Byte secara numerik int compareTo(Byte b).4.

// objek kelas Byte menjadi nilai float int hashCode(). // objek kelas Short menjadi nilai float int hashCode(). 82 . int radix) throws NumberFormatException short shortValue(). // objek kelas Short menjadi nilai byte // membandingkan dua objek milik kelas Short secara numerik int compareTo(Short sh). static Short decode(String str) throws NumberFormatException //konversi objek kelas Byte menjadi nilai double daouble doubleValue().// objek kelas Byte menjadi nilai int long longValue().float floatValue(). int radix) throws NumberFormatException Method-method di kelas Short : byte byteValue().//objek kelas Byte menjadi nilai short String toString(). float floatValue(). static Byte valueOf(String str) throws NumberFormatException static Byte valueOf(String str. // membandingkan dua objek milik kelas Short boolean equels(Object shortObj).// objek kelas Byte menjadi nilai long static byte parseByte(String str) throws NumberFormatException static byte parseByte(String str. int compareTo(Object obj). // konversi nilai numerik menjadi objek milik kelas String static String toString(byte num). int intValue().

int compareTo(Object obj). int default). static Integer getInteger(String propertyName. // objek kelas Short menjadi nilai int long longValue(). static Integer getInteger(String propertyName). static Short valueOf(String str) throws NumberFormatException static Short valueOf(String str. int radix) throws NumberFormatException Method-method di kelas Integer : byte byteValue(). // membandingkan dua objek milik kelas Integer boolean equels(Object IntegerObj).int intValue(). static Integer decode(String str) throws NumberFormatException //objek milik kelas Integer menjadi nilai double double doubleValue(). 83 . //objek kelas Integer menjadi nilai byte // membandingkan dua objek milik kelas Integer secara numerik int compareTo(Integer i). // objek kelas Short menjadi nilai long static byte parseShort(String str) throws NumberFormatException static byte parseShort(String str. Integer default). int radix) throws NumberFormatException short shortValue(). //konversi objek milik kelas Integer menjadi nilai float float floatValue(). static Integer getInteger(String propertyName. //objek kelas Short menjadi nilai short // konversi nilai numerik short menjadi objek milik kelas String String toString(short num).

int radix) throws NumberFormatException Dua attribute yang bersifat final static (konstanta) pada kelas Integer : MINVALUE (nilai terkecil yg dapat disajikan objek milik kelas Integer). // konversi nilai numerik int menjadi objek milik kelas String static String toString(int num). static String toOctalString(int num). static String toHexString(int num). 84 . int hashCode(). static String toString(int num.static String toBinaryString(int num). int radix) throws NumberFormatException // konversi objek milik kelas Integer menjadi nilai short short short()Value. int intValue(). // konversi nilai numerik short menjadi objek milik kelas String String toString(). static byte parseInt(String str) throws NumberFormatException static byte parseInt(String str. static Integer valueOf(String str) throws NumberFormatException static Integer valueOf(String str.//objek milik kelas Integer menjadi nilai int // konversi objek milik kelas Integer menjadi nilai long long longValue(). int radix).

// objek milik kelas Long menjadi nilai int // konversi objek milik kelas Long menjadi nilai long long longValue(). Integer default). static Long decode(String str) throws NumberFormatException //objek milik kelas Long menjadi nilai double double doubleValue(). // hasilnya 17. int default). // objek kelas Long menjadi nilai byte // membandingkan dua objek milik kelas Long secara numerik int compareTo(Long obj).floatValue(). static Long getLong(String propertyName. static Long getLong(String propertyName.0 static Long getLong(String propertyName). float f = i.MAXVALUE (nilai terbesar yg dapat disajikan objek milik kelas Integer). int compareTo(Object obj). int hashCode(). // membandingkan dua objek milik kelas Long boolean equels(Object obj). Method-method di kelas Long adalah : byte byteValue(). 85 . contoh : Integer i = new Integer(17). //konversi objek milik kelas Long menjadi nilai float float floatValue(). int intValue().

// membandingkan dua objek milik kelas Float boolean equels(Object obj). int radix) throws NumberFormat Exception // konversi objek milik kelas Long menjadi nilai short short shortValue(). static String toOctalString(long num). static String toHexString(long num). 86 . static String toBinaryString(long num). int hashCode(). Static String toString(long num).5. int compareTo(Object obj). int radix) throws NumberFormatException 8. //objek milik kelas Float menjadi nilai double double doubleValue(). // objek kelas Float menjadi nilai byte // membandingkan dua objek milik kelas Float secara numerik int compareTo(Float f).static long parseLong(String str) throws NumberFormat Exception static long parseLong(String str. // konversi objek milik kelas Float menjadi nilai float float floatValue().4. // konversi nilai numerik long menjadi objek milik kelas String String toString(). Kelas Float dan Double Method-method di kelas Float : byte byteValue(). static Long valueOf(String str) throws NumberFormatException static Long valueOf(String str.

// konversi nilai numerik float menjadi objek milik kelas String String toString().static float intBitsToFloat(int bits). // konversi objek milik kelas Float menjadi nilai long long longValue(). static Float valueOf(String str) throws NumberFormatException Method-method di kelas Double : 87 . // bit biner ke float static int floatToIntBits(float num). // hasilnya long 34 static float parseFloat(String str) throws NumberFormatException // konversi objek milik kelas Float menjadi nilai short short shortValue(). static String toString(float num). boolean isNaN().237). //bil float ke bit biner int intValue(). static boolean isNaN(float f). // objek milik kelas Float menjadi nilai int boolean isInfinite(). contoh : Float f = new Float(34. long l = f.longValue(). static boolean isInfinite(float f).

// objek milik kelas Double menjadi nilai int boolean isInfinite(). static boolean isNaN(double num). 88 . int intValue(). // konversi objek milik kelas Double menjadi nilai long long longValue(). static float parseDouble(String str) throws NumberFormatException // konversi objek milik kelas Double menjadi nilai short short shortValue(). // membandingkan dua objek milik kelas Double secara numerik int compareTo(Double d). int hashCode(). int compareTo(Object obj). static int doubleToLongBits(double num). //NaN = not a number staic double longBitsToDouble(long num). //num tak hingga boolean isNaN(). // konversi objek milik kelas Double menjadi nilai float float floatValue().// objek kelas Double menjadi nilai byte byte byteValue(). static boolean isInfinite(double num). //objek milik kelas Double menjadi nilai double double doubleValue(). // membandingkan dua objek milik kelas Double boolean equels(Object obj).

// konversi nilai numerik double menjadi objek milik kelas String String toString() static String toString(double num). Kelas Float memiliki beberapa attribute yang bersifat final dan static (konstanta) yaitu : Nama Konstanta MINVALUE MAXVALUE NEGATIVE_INFINITY POSITIVE_INFINITY NaN Deskripsi Nilai terkecil objek Float Nilai terbesar objek Float Angka tak berhingga negatif Angka tak berhingga positif Kondisi bukan angka 89 .