Semester 1 dan 2
1. Konsep Pemrograman dan Paradigmanya:
Tingkat Bahasa Pemrograman, Paradigma Pemrograman,
2. Teknologi Java dan Perangkat Pemrograman:
Java Family, Perangkat, Instalasi, Kompilasi
3. Dasar dan Aturan:
Type Data, Pengambil Keputusan dan Perulangan
4. Konsep Dasar Pemrograman Berorientasi Objek:
Class, Object, Attribute, Method, Constructor
5. Karakteristik Pemrograman Berorientasi Objek:
Abstraction, Encapsulation, Inheritance, Polymorphisme
6. Pengorganisasian Class:
Package, Interface
Java Language
javac java
(Java Compiler) (Java Interpreter)
Paradigma Pemrograman
Sudut pandang dan style pemrograman berhubungan dengan
bagaimana sebuah masalah diformulasikan dalam bahasa
pemrograman
Sejarah Java
• Java adalah salah satu bahasa pemrograman
computer yang berorientasi object diciptakan
oleh salah satu perusahaan Sun microsystem,
perusahaan workstation UNIX .
• JAVA diciptakan berdasarkan bahasa C++ dengan
tujuan platform independent dapat dijalankan
pada berbagai jenis hardware tanpa kompilasi
ulang.
• lanjutan
• lanjutan
• lanjutan
• lanjutan
• lanjutan
Java Certification
Why Java?
2. Code Editor:
– Text/Code Editor:
TextPad, Notepad++
– Integrated Development Environment (IDE):
Netbeans, JCreator
Hello.class
Pernyataan dan
Ekspresi
Pernyataan
• Perintah yang menyebabkan sesuatu terjadi dan
merepresentasikan aksi tunggal dalam program Java
Contoh: int tahunProduksi;
• Setiap pernyataan ditutup oleh karakter semicolon (;)
• Pernyataan dikelompokkan dengan tanda pembuka
({) dan penutup (}). Kelompok ini disebut blok atau
blok pernyataan
Ekspresi
• Pernyataan yang dapat menghasilkan suatu
nilai. Nilai yang dihasilkan oleh pernyataan ini
yang disebut dengan nilai balik (return value)
• Nilai balik bisa berupa bilangan, boolean, atau
objek
• Method tanpa nilai balik biasanya
menggunakan keyword void
• Contoh: hasilBagi = a / b;
Kata Kunci
abstract private case interface
continue this enum static
for break instanceof void
new double return class
switch implements transient finally
assert protected catch long
default throw extends strictfp
package byte int volatile
synchronized else short float
boolean import try native
do public char super
if throws final while
KREATIF DAN INOVATIF
PEMROGRAMAN BERORIENTASI OBJEK
Variabel
• Lokasi di dalam memori komputer yang digunakan
untuk menyimpan suatu informasi (nilai)
• Nilai variabel dapat diubah di pernyataan manapun
di dalam program
• Mendeklarasikan variabel:
tipe namaVariabel1 [, namaVariabel2]
• Contoh:
int hasilKali;
String namaSiswa, namaGuru, namaAdmin;
Lingkup Variabel
Variabel dipanggil berdasarkan lingkupnya, dimulai dari blok
yang paling kecil, kemudian blok di luar itu
1. Local Variable: digunakan di dalam method atau blok
pernyataan yang lebih kecil dari itu
2. Parameter: variabel yg ada di dalam pernyataan (argument)
method
3. Instance Variable: variabel yang memiliki nilai yang berbeda di
setiap objek
4. Class Variable: variabel yang berlaku di suatu class dan
seluruh instan dari class tersebut (objek). Ciri class variable
adalah menggunakan keyword static
Bilangan.java
public class Bilangan {
static int pencacah = 0;
int nilai;
public Bilangan(int nilai){
this.nilai = nilai;
pencacah++;
}
public void info(){
System.out.println("Nilai:“ + this.nilai);
System.out.println("Pencacah:“ + pencacah);
System.out.println("");
}
}
KREATIF DAN INOVATIF
PEMROGRAMAN BERORIENTASI OBJEK
BilanganBeraksi.java
public class BilanganBeraksi{
public static void main(String[] args){
Bilangan b1 = new Bilangan(50);
b1.info();
Modifier
• Modifier adalah keyword yang diletakkan di depan class, interface,
variable (field) atau method
• Jenis Modifier:
– Access Modifier:
• Pengaturan pengaksesan dari variable dan method
– Static Modifier:
• Membuat method dan variable menjadi milik class, bukan object
• Tidak perlu membuat object untuk penggunaan variable (field)
dan method
– Final Modifier:
• Menyatakan bahwa sesuatu (class, method, variable) sudah final
dan tidak dapat diubah
Tipe Data
1. Tipe Data Primitif
– Sebagai kata kunci di Java (lowercase)
– Embedded di compiler Java
– Pemrosesan relatif cepat
– Contoh: int, double
2. Tipe Data Reference
– Class yang ada di library Java (java.lang)
– Menggunakan huruf capital
– Contoh: String, Integer, Double
7. char
8. boolean
KREATIF DAN INOVATIF
Tipe Data Keterangan Ukuran Jangkauan
Primitif PEMROGRAMAN BERORIENTASI OBJEK
byte Bilangan bulat 8 bit -128 → 127
Karakter.java
Literal
Character Escape
Escape Meaning
\n New line
\t Tab
\b Backspace
\r Carriage return
\f Formfeed
\\ Backslash
\' Single quotation mark
\" Double quotation mark
\d Octal
\xd Hexadecimal
\ud Unicode character
LuasSegitiga.java
Operator
• Operator adalah simbol dan karakter khusus
(matematika) yang digunakan dalam suatu ekspresi
• Contoh:
– int x = 3;
– int y = x;
– int z = x * y;
– boolean status = true;
Jenis Operator
1. Operator Aritmatika
2. Operator Penugasan
3. Operator Penggabungan
4. Operator Penambahan dan Pengurangan
5. Operator Bit
6. Operator Pembanding
7. Operator Logika
KREATIF DAN INOVATIF
PEMROGRAMAN BERORIENTASI OBJEK
Operator Aritmatika
Operator Meaning Example
+ Addition 3+4
- Subtraction 5-7
* Multiplication 5*5
/ Division 14 / 7
% Modulus 20 % 7
• Hasil operasi matematika akan mengikuti tipe data
operand
• Operand bertipe int akan menghasilkan int
KREATIF DAN INOVATIF
PEMROGRAMAN BERORIENTASI OBJEK
Operator Penugasan
• Operator penugasan berguna untuk memberi
nilai ke suatu variabel
• Operator penugasan menggunakan tanda sama
dengan ( = )
• Operator penugasan digabungkan dengan
operator aritmatika membentuk operator
penugasan gabungan (compound assignment)
Operator Penggabungan
• Operator + dapat digunakan untuk
penggabungan String dan String maupun String
dan Bilangan
• Contoh:
System.out.println(“Saya adalah” + “Siswa”);
int siswa = 30;
System.out.println(“Jumlah Siswa” + siswa);
== Equal x == 3
!= Not equal x != 3
Operator Logika
Pernyataan Penentu
Keputusan
if
• Pernyataan kondisi yang digunakan untuk
pengambilan keputusan terhadap dua buah
kemungkinan
• if bisa berdiri sendiri atau dengan menggunakan else
• Bentuk:
if(kondisi){
// blok pernyataan yang dijalankan, bila kondisi
benar
}
KREATIF DAN INOVATIF
PEMROGRAMAN BERORIENTASI OBJEK
PernyataanIF.java
public class PernyataanIF{
public static void main(String[] args){
int diskon =0, totalBelanja = 500000;
• Soal 1
- Diketahui:
• NIS : 20170101
• Nama : Iwan Fals
• Nilai Praktikum : 75
-Ditanyakan
Kriteria : Jika nilai praktikum lebih besar atau sama
dengan 80 maka tampilkan kalimat “keterangan =
lulus”. Lakukan sebuah pengujian. Bagaimanakah
hasil outputnya????
KREATIF DAN INOVATIF
PEMROGRAMAN BERORIENTASI OBJEK
• Soal 2
Diketahui:
• Nilai A : 65
• Nilai B : 70
-Ditanyakan
Kriteria : JIKA NILAI A LEBIH BESAR DARI NILAI B
MAKA tampilkan kalimat “Nilai A lebih besar dari
Nilai B. Lakukan sebuah pengujian. Bagaimanakah
hasil outputnya????
if-else
• if-else mengatur pernyataan yang dijalankan sewaktu kondisi
bernilai benar atau salah
• Bentuk:
if(kondisi){
// blok pernyataan yang dijalankan, bila kondisi benar
} else{
// blok pernyataan yang dijalankan, bila kondisi salah
}
PernyataanIFELSE.java
public class PernyataanIFELSE{
public static void main(String[] args){
int diskon =0, totalBelanja = 500000;
• Soal 3
- Diketahui:
• NIS : 20170101
• Nama : Iwan Fals
• Nilai Praktikum : 75
-Ditanyakan
Kriteria : Jika nilai praktikum lebih besar atau sama dengan 80 maka
tampilkan kalimat “keterangan = lulus”. Jika nilai praktikum
kurang dari 80 maka tampilkan kalimat “keterangan = tidak
lulus”Lakukan sebuah pengujian. Bagaimanakah hasil
outputnya????
• Soal 4
• Diketahui
• total pembelian = 50000
• Ditanyakan:
• Menentukan besarnya potongan dari pembelian barang yang diberikan
seorang pembeli, dengan kriteria :
• a. jika total pembelian kurang dari Rp. 50.000,- potongan yang diterima
sebesar 5% dari total pembelian.
• b. Jika total pembelian lebih dari atau sama dengan Rp. 50.000,- potongan
yang diterima sebesar 20% dari total pembelian.
• C.Lakukan sebuah pengujian. Dengan perkiraan output sbb:
Total Pembelian = Rp. 50000
Potongan = Rp. 10000
Jumlah Yang Harus dibayar = Rp. 40000
if-else if-else
• Mengatur pernyataan yang dijalankan sewaktu kondisi berupa pilihan
• Bentuk:
if(kondisiA){
// pernyataan yang dijalankan, bila kondisiA benar
}else if(kondisiB){
// pernyataan yang dijalankan, bila kondisiB benar
}else if(kondisiC){
// pernyataan yang dijalankan, bila kondisiC benar
}else{
// pernyataan yang dijalankan untuk kondisi selain itu
}
PernyataanIFELSEIF.java
public class PernyataanIFELSEIF{
public static void main(String[] args) {
int skorUjian= 86; char nilai;
if (skorUjian >= 90) {
nilai = 'A';
} else if (skorUjian >= 80) {
nilai = 'B';
} else if (skorUjian >= 70) {
nilai = 'C';
} else {
nilai = 'D';
}
System.out.println("Nilai = " + nilai);
}
}
Ditanyakan:
Buat Laporan Nilai Kursus kilat sbb
• Nilai = (nilai word + nilai excel + nilai access) / 3
• Nilai huruf :
– Jika nilai >=80, maka nilai huruf=”A”
– Jika nilai >=66 dan nilai<80, maka nilai huruf=”B”
– Jika nilai >=55 dan nilai<66, maka nilai huruf=”C”
– Jika nilai >=41 dan nilai<55, maka nilai huruf=”D”
– Jika nilai > 41, maka nilai huruf=”E”
• Nilai mutu :
– Jika nilai huruf=”A”, maka nilai mutu=”memuaskan”
– Jika nilai huruf=”B”, maka nilai mutu=”baik”
– Jika nilai huruf=”C”, maka nilai mutu=”cukup”
– Jika nilai huruf=”D”, maka nilai mutu=”kurang”
– Jika nilai huruf=”E”, maka nilai mutu=”gagal”
• Keterangan
– Jika nilai >=55, keterangan =”lulus”
– Jika nilai <55, maka keterangan =”tidak lulus”
• Output:
• NIS : 20170102
• NAMA : Roky Pangaribuan
• Nilai Ms. Word : 80
• Nilai Ms. Excel : 80
• Nilai Ms. Access : 80
• Nilai Rata-rata Keseluruhan : 80
• Nilai Huruf :A
• Nilai Mutu : Memuaskan
• ------------------------------------------------------------------
• Keterangan Siswa : Lulus
• Bentuk:
ekspresi_kondisi ? nilai_1 : nilai_2
OperatorTernary.java
switch
• Switch digunakan untuk melakukan tindakan berbeda terhadap sejumlah
kemungkinan nilai
• Bentuk:
switch(ekspresi){
case nilaiSatu:
Pernyataan 1
break;
case nilaiDua:
Pernyataan2
break;
...
default: PernyataanN;
}
KREATIF DAN INOVATIF
PEMROGRAMAN BERORIENTASI OBJEK
PernyataanSWITCH1.java
public class PernyataanSWITCH1{
public static void main(String[] args){
int pilihan = 3;
switch(pilihan){
case 1:
System.out.println("Soto Ayam");
break;
case 2:
System.out.println("Gule Kambing");
break;
case 3:
System.out.println("Nasi Goreng");
break;
default:
System.out.println("Silakan Pilih 1, 2 atau 3");
}
}
}
PernyataanSWITCH2.java
public class PernyataanSWITCH2{
public static void main(String[] args){
int pilihan = 3;
switch(pilihan){
case 1:
case 2:
case 3:
case 4:
case 5:
System.out.println("Hari Kerja");
break;
case 6:
case 7:
System.out.println("Hari Libur");
break;
default:
System.out.println("Silakan Pilih Hari");
}}}
Pernyataan
Pengulangan Proses (Loop)
1.for
2.while
3.do-while
for
• for sering disebut for loop, karena digunakan untuk
proses looping atau pengulangan
• Bentuk:
PernyataanFOR.java
• Soal 1
• Soal 2
• Buatlah output sbb:
10 9 8 7 6 5 4 3 2 1
• Soal 3
• Buatlah output sbb:
while
PernyataanWHILE.java
class PernyataanWHILE {
public static void main(String[] args){
int i = 1;
while (i < 11) {
System.out.println(i);
i++;
}
}
}
KREATIF DAN INOVATIF
PEMROGRAMAN BERORIENTASI OBJEK
1. Pernyataan FOR
2. Pernyataan WHILE
• Soal 1
• Soal 2
• Buatlah output sbb:
10 9 8 7 6 5 4 3 2 1
• Soal 3
• Buatlah output sbb:
do...while
PernyataanDOWHILE.java
class PernyataanDOWHILE {
public static void main(String[] args){
int i = 1;
do {
System.out.println(i);
i++;
} while (i <= 10);
}
}
• Soal 1
• Soal 2
• Buatlah output sbb:
10 9 8 7 6 5 4 3 2 1
Pernyataan Pemindah
Proses (Jump)
1. return
2. break
3. continue
return
• Digunakan untuk keluar dari method
• return memiliki dua bentuk:
1. mengembalikan nilai (sesuai dengan tipe data)
2. tidak mengembalikan nilai (untuk void)
• Contoh:
int perkalian(int x, int y){
return x * y;
}
void perkalian(int x, int y){
hasilKali = x * y;
return;
}
break
PernyataanBREAK.java
PernyataanBREAKLABEL.java
public class PernyataanBREAK {
public static void main(String[] args){
selesai:
for(int i=1; i<11; i++){
if(i==5) break selesai;
System.out.println(i);
}
}
}
KREATIF DAN INOVATIF
PEMROGRAMAN BERORIENTASI OBJEK
continue
• Digunakan untuk melanjutkan eksekusi ke suatu
pengulangan (loop)
• Bisa berbentuk tanpa label atau berlabel
• Bentuk code persis sama dengan break, baik untuk
yang tanpa label atau berlabel
Attribute:
Berorientasi Objek? Topi, Baju, Jaket,
Tas Punggung,
Tangan, Kaki, Mata
Behavior:
Cara Jalan ke Depan
Cara Jalan Mundur
Cara Belok ke Kiri
Cara Memanjat
Attribute → Variable(Member)
KREATIF DAN INOVATIF
Behavior → Method(Fungsi)
PEMROGRAMAN BERORIENTASI OBJEK
Latihan
1. Lakukan kegiatan berorientasi objek dengan
target Sepeda
2. Pikirkan apa atribut dan behavior yang
dimiliki oleh Sepeda tersebut
• Class: mobil
• Object: mobilnya pak Joko, mobilku
kecepatan variable
ubah kecepatan
kecepatan = 10km/jam
instance
variable
Attribute
• Variable yang mengitari class, dengan nilai datanya bisa
ditentukan di object
• Name, age, dan weight adalah atribute dari class Person
Method
• Method adalah implementasi dari bagaimana
bekerjanya sebuah class
• Method melakukan:
1. Manipulasi data
2. Perhitungan matematika
3. Memonitor kejadian dari suatu event
Latihan
Handphone hidup …
Kring, kring, kring … panggilan dilakukan
Dung, dung … sms berhasil terkirim
Handphone mati …
Latihan
• Buat class Singa yang berisi tiga method:
1. roaring()
2. Tidur()
3. Berburu()
– Isi masing-masing method dengan tampilan status
menggunakan System.out.println()
• Buat class SingaBeraksi, dan panggil method-
method diatas dalam class tersebut
KREATIF DAN INOVATIF
PEMROGRAMAN BERORIENTASI OBJEK
Latihan
• Buat class Siswa yang berisi tiga method:
1. membaca()
2. menulis()
3. modifikasi()
– Isi masing-masing method dengan tampilan status
menggunakan System.out.println()
• Buat class SiswaBeraksi, dan panggil method-
method diatas dalam class tersebut
KREATIF DAN INOVATIF
PEMROGRAMAN BERORIENTASI OBJEK
Latihan
• Buat class Manusia yang berisi tiga method:
1. menangis()
2. tertawa()
3. bahagia()
– Isi masing-masing method dengan tampilan status
menggunakan System.out.println()
• Buat class ManusiaBeraksi, dan panggil
method-method diatas dalam class tersebut
KREATIF DAN INOVATIF
PEMROGRAMAN BERORIENTASI OBJEK
Parameter
• Sepeda (bicycle) akan berguna apabila ada object lain
(misalnya anda) yang berinterasi dengan sepeda (bicycle)
tersebut
• Object software berinteraksi dan berkomunikasi dengan
object lain dengan cara mengirimkan message
• Informasi dalam message ini dikenal dengan nama
Parameter
Latihan
• Buat Class bernama Matematika, yang berisi method dengan dua parameter:
– pertambahan(int a, int b)
– pengurangan(int a, int b)
– perkalian(int a, int b)
– pembagian(int a, int b)
• Buat Class bernama MatematikaBeraksi, yang mengeksekusi method dan
menampilkan:
– Pertambahan: 20 + 20 = 40
– Pengurangan: 10-5 = 5
– Perkalian: 10*20 = 200
– Pembagian: 20/2 = 10
Variasi Tampilan
pertambahan(int a, int b){
System.out.println(a + “ + “ + b + “ = “ + (a+b))
}
pertambahan(int a, int b){
System.out.println(“Hasil = “ + (a+b))
}
pertambahan(int a, int b){
int hasil = a + b;
System.out.println(“Hasil = “ + hasil)
}
Konstruktor -1-
Konstruktor -2-
public class Mobil {
String warna; Mobil.java
int tahunProduksi;
Latihan
1. Buat class Buku
– Tentukan variable buku: judul, pengarang, penerbit, tahun
– Buat konstruktor class Buku dengan parameter: judul, pengarang,
penerbit, tahun
– Buat method cetakBuku
2. Buat class BukuBeraksi dan tampilkan 2 buku:
– Rogers Cadenhead & Laura Lemay, Teach Yourself Java 6 in 21 Days,
Sams Publishing, 2007
– Deitel & Deitel, Java How to Program 7th Edition, Prentice Hall, 2007
Karakteristik Pemrograman
Berorientasi Objek
Abstraction, Encapsulation,
Inheritance, Polymorphism
Abstraction
• Cara kita melihat suatu sistem dalam bentuk yang lebih sederhana, yaitu
sebagai suatu kumpulan subsistem (object) yang saling berinteraksi.
– Mobil adalah kumpulan sistem pengapian, sistem kemudi, sistem
pengereman
• Alat meng-abstraksikan sesuatu adalah class
• Object bersifat modularity (sebuah pengelompokan komponen-komponen
yang berbeda, tetapi memilki kesamaan berdasarkan struktur fungsinya.
)Object dapat ditulis dan dimaintain terpisah (independen) dari object lain
Encapsulation
• Mekanisme menyembunyikan suatu proses dalam sistem
untuk menghindari interferensi dan menyederhanakan
penggunaan sistem itu sendiri
– Tongkat transmisi (gigi) pada mobil
– Tombol on/off/pengaturan suhu pada AC
• Class access level (public, protected, privat) adalah
implementasi dari konsep encapsulation
Inheritance (Pewarisan)
• Suatu class dapat
mewariskan atribut dan
method kepada class lain
(subclass), serta
membentuk class
hierarchy
• Penting untuk Reusability
• Java Keyword:
extends
KREATIF DAN INOVATIF
PEMROGRAMAN BERORIENTASI OBJEK
Sepeda.java
public class Sepeda{
int kecepatan, gir ;
// method
void ubahGir(int pertambahanGir) {
gir= gir+ pertambahanGir;
System.out.println("Gir:" + gir);
}
Latihan
• Buat class MatematikaCanggih yang merupakan
inherit dari class Matematika
– Tambahkan method modulus(int a, int b) yang
menghitung modulus dari a dan b. Operator modulus
adalah %
• Buat class MatematikaCanggihBeraksi yang
memanggil method pertambahan, perkalian dan
modulus
Polymorphism
• Suatu object dapat memiliki berbagai bentuk
• Implementasi konsep polymorphism:
1. Overloading: Penggunaan satu nama untuk
beberapa method yang berbeda parameter
2. Overriding: Terjadi ketika deklarasi method
subclass persis sama dengan method dari
superclassnya
Polymorphism – Overloading
class Mobil {
public class MobilKonstruktor{
String warna; public static void main(String[] args){
int tahunProduksi; Mobil mobilku = new Mobil(“Merah”,
2003);
public Mobil(String warna, int tahunProduksi){
mobilku.info();
this.warna = warna;
this.tahunProduksi = tahunProduksi;
} Mobil mobilmu = new Mobil();
mobilmu.info();
public Mobil(){
} }
}
void info(){
System.out.println("Warna: " + this.warna);
System.out.println("Tahun: " +
this.tahunProduksi);
}
}
Polymorphism – Overloading
class Lingkaran{
public buatLingkaran(){
}
public buatLingkaran(int diameter){
...
}
public buatLingkaran(int diameter, int x, int y){
...
}
public buatLingkaran(int diameter, int x, int y, int warna, String namaLingkaran){
...
}
}
Polymorphism - Overriding
public class Sepeda{
int gir;
int getGir() {
return gir;
}
}
super.setGir(pertambahanGir);
sepedaku.setGir(2);
gir=2*getGir();
System.out.println(sepedaku.getGir());
sepedaku.setGir(3);
}
System.out.println(sepedaku.getGir());
}
SepedaGunung.java }
}
SepedaGunungBeraksi.java
KREATIF DAN INOVATIF
PEMROGRAMAN BERORIENTASI OBJEK
Latihan
Matematika.java
class Matematika{
void pertambahan (int a, int b){
int hasil= a + b;
System.out.println(“hasil:” + hasil);
}
Latihan: Overriding
Pengorganisasian Class
Package, Interface
Packages
• Package adalah koleksi dari beberapa class dan interface yang
berhubungan, dan menyediakan proteksi akses dan pengelolaan
namespace
• 1 package adalah 1 folder di file system
• Package berguna untuk mengorganisir file dalam suatu project
atau library
• Nama package menggunakan lowercase
• Nama package mengikuti nama domain (perusahaan) dengan
susunan terbalik
– Contoh: com.brainmatics.kendaraan
• Keyword: package name;
KREATIF DAN INOVATIF
PEMROGRAMAN BERORIENTASI OBJEK
Budi.java
package kelasku;
Joko.java
package kelasku;
PaketBeraksi.java
import kelasku.*;
Struktur Direktori
• PaketBeraksi.java
• kelasku
– Budi.java
– Joko.java
Interface
InterfaceLampu.java
interface InterfaceLampu{
public static final int KeadaanHidup=1;
public static final int KeadaanMati=0;
Lampu.java
public class Lampu implements InterfaceLampu{
int statusLampu;
LampuBeraksi.java
public class LampuBeraksi{
public static void main(String[] args){
Latihan
• Buat program serupa dengan
InterfaceBeraksi.java tapi untuk
ACBeraksi.java
• Masukkan method-method di bawah ke
dalam ACBeraksi.java
– matikanAC() dan hidupkanAC()
– dinginkanAC() dan panaskanAC ()
KREATIF DAN INOVATIF
PEMROGRAMAN BERORIENTASI OBJEK
Referensi
1. Sharon Zakhour et al, The Java Tutorial Fourth Edition,
http://java.sun.com/docs/books/tutorial
2. Cay Horstmann, Big Java, John Wiley & Sons, 2010
3. Rogers Cadenhead & Laura Lemay, Teach Yourself Java 6 in 21 Days, Sams
Publishing, 2007
4. Deitel & Deitel, Java for Programmers, Prentice Hall, 2009
5. Robert Lafore, Data Structures and Algorithms in Java Second Edition, Sams
Publishing, 2003
6. Tim Pengembang JENI, JENI 1-6, Depdiknas, 2007
7. Rachmad Hakim & Sutarto, Mastering Java, Elex Media Komputindo, 2009
8. Romi Satrio Wahono