Unknown

Exception Han

          Suatu program apabila mengalami kesalahan akan menghasilkan suatu runtime errors seperti gagal membuka file, suatu program melakukan akses diatas range array dan lain-lain. ketika runtime errors tersebut terjadi, aplikasi akan membuat suatu exception. Dalam definisi lain exception Suatu mekanisme penanganan error atau event yang terjadi ketika program menemui kesalahan saat instruksi program dijalankan.
Contoh kesalahan yang terjadi :
     - Pembagian bilangan dengan 0
     - Pengisian elemen array diluar ukuran array
     - Kegagalan koneksi database
     - File yang akan dibuka tidak exist
     - Operand yg akan dimanipulasi out of prescribed range
     - Mengakses obyek yang belum diinisialisasi

Tujuan dari setiap exception :
- Error : mengindikasikan bahwa error yang terjadi adalah fatal error (severe problem) dimana proses recovery sangat sulit dilakukan bahkan tidak mungkin dilakukan. Contoh : program running out of memory.

- RuntimeException : mengindikasikan kesalahan implementasi atau desain program. Contoh : ArrayIndexOutOfBounds.

- Other exception : mengindikasikan kesalahan environment. Contoh : file not found, invalid URL exception.

Pengertian Try, Catch, Finally :
Try digunakan untuk menempatkan kode-kode program java yang mengandung kode program yang mungkin melemparkan exception. Catch digunakan untuk menempatkan kode-kode program java yang digunakan untuk menangani sebuah exception tertentu. Sedangkan finally digunakan untuk mendefinisikan kode program yang selalu dieksekusi baik ada exception yang terjadi maupun bila tidak terjadi exception sama sekali.

Kategori Exception :


Melempar exception :
1. Throw digunakan untuk melempar suatu exception jika user mengijinkannya dan akan di tangkap oleh exception.

2. Throws
Jika sebuah method dapat menyebabkan sebuah exception namun tidak menangkapnya, maka digunakan keyword throws. Aturan ini hanya berlaku pada checked exception. Anda akan mempelajari lebih lanjut tentang checked exception dan unchecked exception pada bagian selanjutnya, “Kategori Exception”. Berikut ini penulisan syntax menggunakan keyword throws :

() throws {
}

Sebuah method perlu untuk menangkap ataupun mendaftar seluruh exceptions yang mungkin terjadi, namun hal itu dapat menghilangkan tipe Error, RuntimeException, ataupun subclass-nya.

Unknown

Konsep Variabel pada Java Programing

Pengertian Variabel

Variabel adalah satuan dasar penyimpanan dalam program Java, kalau di dunia nyata variabel dapat kita ibaratkan sebuah tempat penyimpanan yang dapat menampung suatu benda yang sesuai dengan tempat penyimpanan tersebut. Sebagai contoh keranjang yang di khususkan untuk menampung mie, maka yang dapat ditampungnya adalah mie itu sendiri.
Dalam Java, suatu variabel dapat bersifat lokal (sementara) misalakan variabel yang ada di dalam perulangan for, atau dapat juga varaibel instance yang dapat diakses oleh semua method dalam class.
Lalu untuk benda (mie sebagai contoh diatas) atau sesuatu yang ada dalam varaibel disebut dengan nilai. Nilai dalam suatu variabel dapat berubah selama program berjalan. Nilai yang tersimpan dalam suatu variabel tidak harus berupa bilangan atau mie saja. Kita juga dapat membuat variabel yang dapat menampung huruf, seperti halnya kita dapat membuat tempat penyimpanan khusu untuk buah selain untuk mie. Nah jenis nilai yang tersimpan dalam variabel ini dalam Java tergantung pada tipe data yang didukung oleh Java.

Manggunakan Variabel

Dalam Java, secara eksplisit kita harus mendeklarasikan variabel sebelum kita menggunakannya. Java juga merupakan strongly language programing dimana dalam setiap pembuatan variabel kita juga harus mendefinisikan tipe data yang digunakan. Java juga secara eksplisit mengharuskan kita untuk mendeklarasikan variabel sehingga jika terdapat salah ejaan (misspell) dalam nama variabel, compiler akan menemukan kesalahan tersebut dan menampilkannya sebagai kesalahan compiler (compiler error).

Deklarasikan Variabel

Bentuk Umum

Untuk mendefinisikan variabel terlebih dahulu tentukan tipe datanya lalu nama variabel dan diakhiri oleh tanda titik-koma karena pendeklarasian variabel merupakan sebuah bentuk pernyataan (statement). Bentuk dasar dalam pendeklarasian varaibel adalah sebagai berikut :
tipe namaVariabel;
Contohnya adalah seperti berikut ini :
public class ContohVariabel {

    int panjang;

    String namaLengkap;

    double radius;

    // kode selanjutnya disini

}
Contoh diatas adalah bagaimana cara kita mendeklarasikan suatu variabel. Variabel panjang akan menampung nilai integer, namaLengkap akan menampung nilai String, dan radius akan menampung nilai double. Untuk tipe data yang didukung oleh Java akan dibahas di artikel selanjutnya.

Deklarasikan Dua Variabel atau Lebih dalam Satu Statement.

Kita dapat mendeklarasikan dua atau lebih variabel dengan tipe data yang sama dalam satu baris statement, caranya adalah dengan memisahkan nama variabel dengan tanda baca koma. Contohnya adalah sebagai berikut :
public class ContohDeklarasiDuaVariabel{

    int a, b, c;

    // kode selanjutnya disini

}
Potongan code diatas memperlihatkan bagaimana kita mendeklarasikan tiga variabel dalam satu statement yaitu variabel a , b , c dengan tipe data int . Tetapi, cara pendeklarasian seperti contoh diatas tidak dianjurkan untuk dilakukan karena hal ini akan sedikit menyulitkan orang lain dalam membaca kode kita sehingga menyulitkan dalam hal maintanance di kemudian hari.

Deklarasi variabel class

Variabel kelas adalah variabel yang dapat diakses oleh semua method di dalam class, termasuk static method seperti method main. Ketika mendeklarasikan variabel class, ada dua aturan daras yang harus diikuti, yaitu :
1. Menempatkan deklarasi variabel pada blok class, tetapi tidak adalam method yang berada dalam class
2. Kita harus mamasukan kata kunci static dalam pendeklarasian varaibel class. Kata kunci static ditempatkan sebelum tipe variabel.
Berikut contoh dari variabel class agar lebih jelasnya :
public class SalamSatu {
    // Mendeklarasiakan variabel class
    static String salam = "Assalamu'alaikum!!";

    public static void main (String[] args){
        System.out.println(salam);
        System.out.println(nama);
    }

    static String nama = "Noor Abdullah Adiana";
}
Dapat dilihat dari contoh diatas bagaimana kita mendeklarasikan variabel kelas di awal dan di akhir class, kedua – duanya bisa dilakukan, tetapi dianjurkan untuk mendeklarasikan setiap variabel di awal class karena memudahkan untuk maintanance kode di kemudian hari.

Deklarasi Variabel Instance

Deklarasi variabel instance sama halnya dengan variabel class, tetapi tidak menggunakan kata static dalam pendeklarasiannya. Variabel instance terhubung dengan instance dari class. Jadi kita hanya bisa menggunakannya ketika membuat instance dari class yang bersangkutan. Karena static method tidak terhubung dengan instance dari class, kita tidak bisa menggunakan variabel instance dalam static method dan memasukkannya dalam main method.
Berikut adalah contoh dari pendeklarasian variabel instance dan jika kita mencoba untuk mengakses variabel tersebut melalui main method (yang merupakan static method) maka saat di-compile akan mengalami error.
public class SalamDua {

    // Mendeklarasiakan variabel instance
    String salam = "Assalamu'alaikum!!";

    public static void main (String[] args){
        System.out.println(salam);
    }
}
Apabila kita compile program diatas, maka akan terjadi error dengan pesan sebagai berikut :
Salam.java:7: error: non-static variable salam cannot be referenced from a static context
        System.out.println(salam);
                           ^
1 error

Deklarasi Variabel Lokal

Variabel lokal adalah variabel yang dideklarasikan di dalam badan method. Jadi kita hanya dapat menggunakan variabel tersebut di dalam method saja. Method lain dalam class tidak peduli akan keberadaan variabel tersebut. Dan variabel lokal hanya akan ada jika method (yang memiliki variabel lokal tersebut) dieksekusi. Dalam pendeklrasiannya kita tidak perlu menambahkan kata static (seperti yang harus dilakukan pada saat mendeklarasikan variabel class). Jika kata static digunakan dalam pendeklarasian variabel lokal, maka compiler akan menghasilkan pesan error dan menolak untuk melakukan compile terhadap program.
Berikut adalah contoh program yang menunjukkan pendeklarasian variabel lokal di dalam method main:
public class SalamTiga{

    // Awal dari method
    public static void main(String[] args){

        // Deklarasi variabel local
        String salam = "Assalamu'alaikum!!";
        System.out.println(salam);

    } // Akhir dari method
}
Berbeda dengan variabel class dan instance, variabel lokal dideklarasikan terlebih dahulu sebelum statement yang menggunakan variabel tersebut. Perhatikan contoh program berikut ini :
public class SalamTiga{

    // Awal dari method
    public static void main(String[] args){

        // Deklarasi variabel local
        salam = "Assalamu'alaikum!!";
        System.out.println(salam);
        String salam;

    } // Akhir dari method
}
Contoh sourcecode diatas pada saat di kompilasi akan terjadi error seperti berikut ini :
SalamTiga.java:7: error: cannot find symbol
        salam = "Assalamu'alaikum!!";
        ^
  symbol:   variable salam
  location: class SalamTiga
SalamTiga.java:8: error: cannot find symbol
        System.out.println(salam);
                           ^
  symbol:   variable salam
  location: class SalamTiga
2 errors
Dapat kita lihat dari pesan error tersebut compiler tidak bisa menemukan variabel salam, karena variabel tersebut baru dideklarasikan pada line ke-9, sedangkan statement yang berada pada baris ke-7 (dan juga baris ke-8) sudah menggunakan variabel tersebut.

Inisialisasi Variabel

Inisialisasi adalah pemberian nilai pada variabel yang sudah kita deklarasikan, sebenarnya pada contoh – contoh sebelumnya telah tersirat bagaimana caranya inisialisai variabel. Proses inisialisasi variabel ini secara eksplisit dilakukan dengan menggunakan assignment statement yang ditandai dengan tanda baca sama dengan (=). Variabel yang akan diberi nalai selalu berada disebelah kiri sedangkan nialinya berada di sebelah kanan. Adapun bentuk umum dari assignment statement adalah sebagai berikut :
variabel = nilai;

variabel = ekspresi;
Contoh inisialisasi pada variabel adalah sebagai berikut :
public class InisialisasiVariabel{
    // Deklarasi variabel
    int i;
    int luas;

    // Inisialisasi variabel
    i = 2480;
    luas = 20 * 5;

    // Bisa juga seperti berikut
    int tinggi = 20;

    // Atau bisa juga seperti ini
    int a = 5, b = 10;

}
Dari contoh diatas ada beberapa cara untuk melakukan inisialisai, pertama adalah mendeklarasikan varaibel baru di inisialisasi seperti pada variabel i dan luas, atau dengan mendeklarasikan variabel lalu langsung diikuti dengan inisialisasi seperti varaibel tinggi, ataupun kita juga dapat menginisialisasi dua variabel atau lebih dalah satu baris statement seperi pada varaibel a dan b. Tetapi memang yang lazim digunakan adalah cara pertama.
Selain itu dari contoh diatas, inisialisasi variabel dapat menggunakan nilai langsung atau dengan melakuakn sebuah ekspresi yang menghasilkan sebuah nilai yang sesuai dengan tipe datanya.

Konstanta

Konstanta yang juga disebut variabel final, merupakan variabel yang nilainya tidak dapat kita rubah setelah diinisialisasi. Untuk mendeklarasikan konstanta, kita menambahkan kata kunci final pada pendeklarasian variabel:
final int JUMLAH_HARI = 7;
Meskipun kita dapat membuat variabel konstanta lokal, kebanyakan variabel konstanta merupakan variabel kelas atau instance. Untuk mendeklarasikan konstanta kelas, tambahkan static final pada pendeklarasian variabel:
static final JUMLAH_HARI = 7;
Contoh nya adalah sebagai berikut :
public class Konstanta{

    // Deklarasi dan inisialisasi konstanta
    static final JUMLAH_HARI = 7;

    public static void main (String[] args){

        // Mencoba untuk merubah nilai konstanta
        JUMLAH_HARI = 8;

        System.out.println(JUMLAH_HARI);

    }
}
Kode sumber diatas apabila kita compile maka akan terjadi error, kurang lebih seperti berikut :
Konstanta.java:4: error: <identifier> expected
    static final JUMLAH_HARI = 7;
                            ^
1 error

Cakupan Variabel

Cakupan dari suatu variabel merupakan area dimana variabel termasuk (semestinya berada), hal tersebut ditentukan oleh area dimana variabel tersebut dideklarasikan. Dalam istilah sederhananya, setiap variabel ada (exists) di dalam blok dimana variabel dideklarasikan termasuk blok – blok yang dideklarasikan di dalam blok tersebut.
Contohnya adalah sebagai berikut :
public class CakupanVariabel{ // Awal dari blok CakupanVariabel

    // Deklarasi variabel 
    static int a;

    static void blokSatu(){ // Awal dari blok blokSatu didalam blok CakupanVariabel

        // Deklarasi variabel blokSatu
        a = 4;
        int b = 2;
        int hasil = a + b;

    } // Akhir dari blokSatu

    public static void main (String[] args){ // Awal dari blok main didalam blok CakupanVariabel

        // Mengakses varaibel a
        a = 2;
        int hasilDua = a + 4;
        System.out.println(hasilDua);

    } // Akhir dari blok main

} // Akhir dari blok CakupanVariabel
Dari contoh diatas kita dapat melihat bahwa varaibel a bisa diakses dari blok lain asalkan masih didalam blok yang mendeklarasikan varaibel a tersebut. Tetapi apabila kita sedikit merubah kode diatas menjadi seperti berikut :
public class CakupanVariabel{ // Awal dari blok CakupanVariabel

    // Deklarasi variabel 
    static int a;

    static void blokSatu(){ // Awal dari blok blokSatu didalam blok CakupanVariabel

        // Deklarasi variabel blokSatu
        a = 4;
        int b = 2;
        int hasil = a + b;

    } // Akhir dari blokSatu

    public static void main (String[] args){ // Awal dari blok main didalam blok CakupanVariabel

        // Mengakses varaibel hasil
        System.out.println(hasil);

    } // Akhir dari blok main

} // Akhir dari blok CakupanVariabel
Ketika di compile maka akan terjadi error seperti ini :
CakupanVariabel.java:18: error: cannot find symbol
        System.out.println(hasil);
                           ^
  symbol:   variable hasil
  location: class CakupanVariabel
1 error
Hal ini menunjukan bahwa variabel hanya dikenali didalam blok yang mendeklarasikannya atau blok lain yang ada di dalam blok deklarasi variabel yang bersangkutan.
Unknown

Tipe Data Dan Sifat-Sifatnya

Java memiliki tipe data yang dapat dikategorikan menjadi dua kelompok, yaitu
tipe data primitif dan referensi.
1. Tipe Data Primitif
Tipe data primitif dalam pemrograman Java, yaitu :
a. Integer ( Bilangan Bulat )
Integer merupakan tipe data numerik yang digunakan apabila tidak berurusan
dengan pecahan atau bilangan desimal. Tipe data numerik yang termasuk integer
adalah sebagai berikut:
BAB
2 TIPE DATA DAN VARIABEL
Buku Panduan Pemrograman JAVA
Jurusan Sistem Informasi
Laboratorium Komputer
IBI DARMAJAYA Bandar Lampung
10
Tipe Deskripsi
Byte Memiliki nilai integer dari -128 sampai +127 dan menempati 1 byte ( 8
bits ) di memori
Short Memiliki nilai integer dari -32768 sampai 32767 dan menempati 2 bytes
( 16 bits ) di memori
Int Memiliki nilai integer dari -2147483648 sampai 2147483647 dan
menempati 4 bytes ( 32 bits ) di memori
Long Memiliki nilai dari -9223372036854775808 sampai
9223372036854775807 dan menempati 8 bytes ( 64 bits ) di memori
Bilangan integer biasanya menggunakan int, dan bukan byte, short maupun
long. Bilangan integer juga mengenal nilai positif dan negatif ( signed number ).
Tipe data byte dan short hanya digunakan pada aplikasi khusus yang memperhatikan
penggunaan memori. Sedangkan long jarang digunakan karena jarang memerlukan
bilangan sebesar kapasitas long.
b. Floating Point ( Bilangan Pecahan )
Floating Point digunakan untuk menangani bilangan desimal atau perhitungan
yang lebih detail dibanding integer. Ada dua macam floating point, yaitu :
Tipe Deskripsi
Float memiliki nilai -3.4x108 sampai +3.4x108 dan menempati 4 byte di
memori.
Double memiliki nilai -1.7x10308 sampai +1.7x10308
Buku Panduan Pemrograman JAVA
Jurusan Sistem Informasi
Laboratorium Komputer
IBI DARMAJAYA Bandar Lampung
11
Semua bilangan pecahan atau desimal dalam Java tanpa diakhiri huruf f akan
dianggap sebagai double. Sedangkan bilangan yang ingin dikategorikan sebagai float
harus diakhiri dengan huruf F. Misalnya : 4.22 F atau 2.314f.
Sedangkan untuk bilangan double, bisa menambah dengan huruf D, karena
secara default bilangan dengan koma atau pecahan atau desimal akan dianggap
sebagai double.
c. Char
Char adalah karakter tunggal yang didefinisikan dengan diawali dan diakhiri
dengan tanda ‘ ( petik tunggal ). Char berbeda dengan String, karena String bukan
merupakan tipe data primitif, tetapi sudah merupakan sebuah objek. Tipe char
mengikuti aturan unicode, sehingga dapat menggunakan kode /u kemudian diikuti
bilangan dari 0 sampai 65535, tetapi yang biasa digunakan adalah bilangan
heksadesimal dari 0000 sampai FFFF. Misalnya : ‘\u123’
Selain karakter biasa, juga terdapat karakter khusus yang didefinisikan dengan
cara mengawalinya menggunakan tanda \ seperti pada tabel berikut :
Kode Nama Nilai Unicode
\b Backspace \u0008
\t Tab \u0009
\n Linefeed \u000a
\r Carriage return \u000d
\* Double quote \u0022
\’ Single quote \u0027
\\ Backslash \u005c
Buku Panduan Pemrograman JAVA
Jurusan Sistem Informasi
Laboratorium Komputer
IBI DARMAJAYA Bandar Lampung
12
d. Boolean
Dalam Java dikenal tipe data boolean yang terdiri dari dua nilai saja, yaitu
true dan false. Boolean sangat penting dalam mengevaluasi suatu kondisi, dan sering
digunakan untuk menentukan alur program.
2. Tipe Data Referensi
Kelebihan pemrograman berorientasi objek adalah dapat mendefinisikan tipe
data baru yang merupakan objek dari class tertentu. Tipe data ini digunakan untuk
mereferensikan objek atau class tertentu, seperti String.
Latihan 2. TipeData.java
class TipeData {
public static void main(String[] args) {
// Tipe data primitif
long data1 = 6531;
int data2 = 2235641;
short data3 = 714;
byte data4 = 34;
float data6 = (float) 1.733;
// tipe data pecahan
double data5 = 4.967;
// tipe data pecahan
char data7 = 'C';
boolean data8 = true;
System.out.println("Nilai Long : "+ data1);
System.out.println("Nilai Int : "+ data2);
System.out.println("Nilai Short : "+ data3);
System.out.println("Nilai Byte : "+ data4);
System.out.println("Nilai Double : "+ data5);
System.out.println("Nilai Float : "+ data6);
System.out.println("Nilai Char : "+ data7);
System.out.println("Nilai Boolean : "+ data8);
}
}
Unknown

pengertian I/O Stream
 I/O -> adalah singkatan dari Input / Output dan mengacu pada transfer data ke atau dari aplikasi.
Stream ->  Keadaan dari sebuah file atau sebuah device yang memungkinkan rangkaian item dapat dibaca atau ditulis

Input atau Stream Sumber
- Dari stream ini dapat membaca
- Superclass dari semua input streams:
* Class InputStream
* Class Reader
Output
- Kita dapat menulis pada stream ini
- Class root dari stream ini:
* Class OutputStream
* Class Writer 
Overview I/O 
1. Konsep Stream
2. Kelas Abstrak pada java.io
3. Reader/Writer
4. Input dan Output file
5. Wrapper

1. Konsep Stream
Stream adalah suatu abstraksi untuk data input dan output.
– Tidak peduli dari mana input berasal atau kemana output akan pergi 
  
Package java.io
• Package java.io berisi kelas yang berhubungan dengan I/O di Java
• Dibagi menjadi beberapa kelas
– Reader/Writer dan turunannya
– InputStream/OutputStream dan turunannya
– I/O Network (socket TCP/IP)
– Exception


2. Kelas Abstrak pada java.io
• Ada 4 kelas abstrak dasar
– Reader
– Writer
– InputStream
– OutputStream
• Reader dan Writer digunakan untuk data Teks
• InputStream dan OutputStream digunakan untuk data biner

3. Kelas Reader/Writer
• Kelas Reader/Writer bekerja pada stream teks (bahasa apapun)
• Disebut juga character stream
• Menangani konversi teks Unicode secara otomatis
• Jangan dipertukarkan dengan InputStream/OutputStream secara sembarangan
• Hasilnya bisa error 

Diagram Kelas Reader dan Turunannya 


Diagram Kelas Writer dan Turunannya
Kelas InputStream/OutputStream
• InputStream dan OutputStream digunakan untuk mengakses informasi non teks (biner)
– disebut juga sebagai byte stream
– COntoh data biner: File EXE, file GIF
• InputStream/OutputStream Tidak menangani konversi teks Unicode secara otomatis

Diagram Kelas InputStream dan turunannya
Diagram Kelas OutputStream dan turunannya
4. Input dan Output File
• Gunakan FileInputStream dan FileOutputStream untuk membaca/menulis file non teks
• Gunakan FileReader/FileWriter untuk file teks

Contoh Membuka file untuk dibaca
• cara untuk membuka file (untuk dibaca):
FileInputStream s = new
FileInputStream(“test.dat”);
• Cara untuk membaca satu byte: int a = s.read()
• Tersedia juga method untuk membaca array of byte
• Prototype read adalah : int read()
– Perlu dicast ke byte untuk membaca sebagai byte
– Memakai int supaya cukup merepresentasikan -1

Contoh Membuka file untuk ditulis
• Cara untuk membuka file (untuk ditulisi):
FileOutputStream out = new
FileOutputStream(“test.out”);
• Intruksi untuk menulis satu byte:
– Out.write(‘a’)
• Tersedia juga method untuk menulis array of byte

Perhatikan:
• Membaca dan menulis selalu perlu try … catch
• Method read() dan write() melempar Exception java.lang.IOException
• Kasus khusus: read() mengembalikan
-1 pada end of file
• EOF (End Of File atau EndOfStream) tidak menimbulkan exception

Memakai FileReader/FileWriter
• Sama seperti contoh sebelumnya
– Ganti nama kelas FileInputStream
dengan FileReader dan FileOutputStream
dengan FileWriter
– Tetap gunakan read/write
• Perhatikan bahwa
– Nilai kembalian

5. Wrapper• Stream dapat dikomposisi atau difilter atau dibungkus untuk menghasilkan stream yang lebih kompleks
• Konsep ini mirip dengan pipe di
Unix/Windows
• Contoh:
– BufferedReader yang menyediakan readLine()
– PipedWriter/PipedReader untuk mempipe suatu stream
– PrintStream/PrintWriter untuk menulis ke stream dengan mudah

 Contoh Wrapper: BufferedReader
• Perhatikan potongan kode berikut:
BufferedReader br = new
BufferedReader(new
FileReader(“hello.txt”));
//membaca 1 baris
String teks = br.readLine();
• BufferedReader membungkus (wraps) FileReader untuk menyediakan method readLine()

Contoh Wrapper: PrintWriter
• Perhatikan potongan kode berikut:
PrintWriter pr = new PrintWriter(new FileWriter(“hello.txt”)); //Menulis 1 baris
pr.println(“Hello “);
• PrintWriter membungkus (wraps) FileWriter untuk menyediakan method print(), println() untuk semua tipe data dasar 

Membaca dari Console [1]
• Java menyediakan System.in yang class-nya adalah InputStream
• Membaca teks dari console
• Untuk membaca teks, perlu di-wrap dengan BufferedReader
• Tapi BufferedReader hanya bisa mewrap suatu class turunan Reader
• InputStream perlu di-wrap dengan InputStreamReader

Membaca dari console [2]
• Buat BufferedReader yangmembungkus InputStreamReader yang membungkus System.in
BufferedReader br = new BufferedReader(new
InputStreamReader(System.in))
• Untuk membaca:
String s = br.readLine();
• Untuk membaca integer, teks dibaca dengan method yang sama, lalu dikonversi dengan method Integer.parseInt()

NIO (Nonblocking I/O)
• JDK 1.4 (nama Kode: Merlin) ke atas menyediakan NIO
– Ada di package java.nio
• Improvement:
– Non blocking I/O
– Buffer
– Regular Expression

[2] String dan StringBuffer
 *String
• Merupakan kelas khusus di Java (ditangani secara transparan)
• Sifatnya immutable (tidak bisa diubah)
• Memiliki berbagai method untuk memiliki manipulasi String

*Literal String
• Harap diingat lagi bahwa:
– Setiap Literal String adalah sebuah objek
String. Contoh:
String teks = “Hello”;
System.out.println(teks.length());
– Sama dengan
System.out.println(“Hello”.length()); 

*Sifat Immutable String
• String sebenarnya tidak dapat diubah, namun Java memungkinkan String seolah-olah diubah, Contoh:
– Jika dilakukan ini:
String judul = "Judul :";
judul += "Eyes On Me";
– Maka sebenarnya yang dilakukan adalah ini
String judul = "Judul :";
judul = judul.concat("Eyes On Me"); 

*Operasi String Tidak Optimal
• String baru diciptakan (string yang lama tetap ada di memori, dan dibuang ketika terjadi garbage collection)
• Untuk operasi yang banyak melibatkan perubahan string, sebaiknya menggunakan StringBuffer 

*StringBuffer
• StringBuffer mirip dengan String
• Sifatnya mutable
• Tidak ditangani secara transparan oleh Java (harus dilakukan secara manual)
• Lebih cepat untuk manipulasi string yang memerlukan perubahan pada String. 

*Sifat mutable StringBuffer
• Untuk mengubah StringBuffer tidak perlu objek baru
– Contoh :
StringBuffer nama = new StringBuffer("mataku");
nama.setCharAt(4, 'm');
• Untuk mengubah String selalu butuh objek baru (objek lama diubah melalui assignment) 

*Method yang penting
• Beberapa method String dan StringBuffer yang penting adalah:
– length(): panjang string
– replace(): mengganti suatu karakter
– charAt(): mengakses karakter di posisi tertentu
– trim(): menghilangkan spasi di awal dan di akhir string
• Perhatikan bahwa meskipun namanya sama, sifat keduanya berbeda
– String menciptakan objek baru, sedangkan StringBuffer tidak 

*Membandingkan String
• Method equals() membandingkan string untuk memeriksa kesamaan
• Method equalsIngnoreCase() melakukan hal yang sama, tapi besar kecil huruf tidak diperhatikan
• Method compareTo() menghasilkan 0 jika string sama, >0 jika String1>String2 dan <0 jika String1<String2 

[3] Kelas Matematik 
*Matematika di Java
• Fungsi matematika ada di package java.math
• Meliputi fungsi trigonometri, dan fungsi matematika standar
– Berisi juga konstanta penting (seperti PI dan e)
– Sebagian besar hasil method adalah bilangan riil (tipenya double ) 

*Memformat Hasil
• Class math tidak menyediakan cara untuk memformat keluaran (output) sehingga dapat dicetak dengan rapi
• Perlu class DecimalFormat untuk melakukan format terhadap output (DecimalFormat ada pada package java.text) 

*Beberapa fungsi matematika yang penting
• Method pow() untuk pangkat
• Fungsi-fungsi trigonometri (sin, cos, tan)
• Pembulatan hasil, meliputi
– ke atas : ceil, ke bawah: floor, dan terdekat : round
• Logaritma 

*Bilangan Acak
• Bilangan acak sangat penting dalam simulasi, permainan, dan enkripsi
• Bilangan acak dihasilkan dengan kelas Random
• Kelas Random tidak berada dalam package java.math, tapi dalam kelas java.util
– Contoh:
Random r = new Random();
int x = r.nextInt(10); //random 0..9 

*BigInteger dan BigDecimal
• BigInteger
– Integer presisi tak hingga
– Berisi semua method untuk operasi integer dan bahkan method untuk mengecek probabilitas suatu bilangan adalah prima
• BigDecimal
– Bilangan floating point presisi tak hingga
– Semua method untuk doube/float 

[4] Utility 
*Utility
• Berbagai macam kelas yang tidak cocokdimasukkan ke package tertentu
• Beberapa yang akan dibahas
– Hashtable
– Stack
– Vector
– Calendar
• Kelas lain yang cukup berguna untukdipelajari: List, Tree 

*Hashtable
• Digunakan untuk menyimpan data dengan assosiasi tertentu
– Misal nama panggilan diassosiasikan dengan nama lengkap
• Memetakan suatu nilai String dengan suatu Objek tertentu (Objek apa saja, termasuk juga Objek String)
• Method yang dipakai adalah put dan get

*Contoh
import java.util.Hashtable;
class HashtableDemo {
public static void main(String argv[]) {
Hashtable h = new Hashtable();
h.put("Linux", "Torvalds");
h.put("Windows", "Microsoft");
String nama = (String) h.get("Linux");
if (nama!=null) {
System.out.println(nama);
}
}

*Stack
• Struktur data LIFO (Last In First Out)
– Data yang masuk pertama akan keluar terakhir
• Memakai Method push, untuk meletakkan satu item di Stack dan pop untuk mengeluarkan satu item dari stack
– Ada juga method peek() untuk mengintip top of stack dan search untuk mencari elemen di Stack() 

*Contoh Stack
import java.util.Stack;
class StackDemo {
public static void main(String argv[]) {
Stack s = new Stack();
s.push("Salamku Kawan");
s.push("Jangan Takut Gelap");
s.push("Gembira berkumpul");
while (!s.empty()) {
System.out.println(s.pop());
}
}

*Vector
• Struktur data seperti array
• Sifatnya dinamis (ukurannya tidak tetap), berubah sesuai dengan elemen yang ditambahkan ke (atau dihapus dari)
Vector tersebut
• Dapat dimanipulasi dengan mudah (elemen-elemennya dapat di add, remove, atau diubah dengan mudah) 

*Contoh Vector
import java.util.Vector;
import java.util.Enumeration;
class VectorDemo {
public static void main(String argv[]) {
Vector v = new Vector();
/* tambahkan elemen */
v.add("Pelangiku");
v.add("Andai Aku Besar Nanti");
v.add("Dua Balerina");
for (int i=0; i<v.size(); i++){
System.out.println(" - " + v.elementAt(i));
}
}


*Calendar
• Dipakai untuk menangani perhitungan kalender Masehi (Gregorian)
– Dirancang untuk mendukung kalender lain
• Menyediakan informasi mengenai tanggal, (date) dan waktu (time) saat ini (misalnya hari apa, bulan ke berapa, hari keberapa dalam tahun ini)
• Menyediakan sarana untuk penghitungan waktu

*Contoh Calendar
import java.util.Calendar;
class Kalender {
public static void main(String argv[]) {
Calendar c = Calendar.getInstance();
System.out.println("Hari ini :");
System.out.println("Hari ke“
+c.get(Calendar.DAY_OF_WEEK)+" dalam
minggu ini");
}}

CONTOH PENERAPAN
package testjeni_02;
import java.io.*;

/**
 *
 * @author NieNov
 */
public class FileInfoClass {
public static void main(String args[]) {
String fileName = "C://Price Tag.txt";
File fn = new File(fileName);
System.out.println("Name: " + fn.getName());
if (!fn.exists()) {
System.out.println(fileName + " does not exists.");
/* membuat sebuah temporary directory . */
System.out.println("Creating temp directory...");
fileName = "temp";
fn = new File(fileName);
fn.mkdir();
System.out.println(fileName +
(fn.exists()? "exists": "does not exist"));
System.out.println("Deleting temp directory...");
fn.delete();
System.out.println(fileName +
(fn.exists()? "exists": "does not exist"));
return;
}
System.out.println(fileName + " is a " +
(fn.isFile()? "file." :"directory."));
if (fn.isDirectory()) {
String content[] = fn.list();
System.out.println("The content of this directory:");
for (int i = 0; i < content.length; i++) {
System.out.println(content[i]);
}
}
if (!fn.canRead()) {
System.out.println(fileName + " is not readable.");
return;
}
System.out.println(fileName + " is " + fn.length() +
" bytes long.");
System.out.println(fileName + " is " + fn.lastModified()
+ " bytes long.");
if (!fn.canWrite()) {
System.out.println(fileName + " is not writable.");
}
}
}