Anda di halaman 1dari 30

Bab III - Memulai Java

Program komputer adalah rangkaian instruksi yang diberikan agar komputer dapat bekerja. Suatu pekerjaan yang mungkin sederhana bagi manusia tidak dapat dimengerti oleh komputer. Manusia harus memberikan petunjuk kepada komputer bagaimana melakukan suatutugas dalam bentuk bahasa pemrograman. Bahasa pemrograman berbeda dengan bahasa manusia, karena komputer membutuhkan aturan yang lebih baku apa yang boleh dan apa yang tidak boleh dalam suatu bahasa pemrograman. Aturan ini disebut sintaks bahasa. Sintaks bahasa pemrograman ditentukan berdasarkan apa yang bisa dilakukan oleh komputer, misalnya loop (perulangan), cabang (branch), atau fungsi. anya program dengan sintaks yang benar yang dapat dikompilasi atau diinterpretasi yang pada akhirnya bisa dijalankan di komputer. !ompiler akan memberikan pesan kesalahan apabila ada kesalahan dalam sintaks sehingga kita memperbaikinya. "ntuk menjadi programmer yang sukses, kita harus mengerti secara detail sintaks dari bahasa pemrograman yang kita akan gunakan. #etapi, sintaks hanya sebagian cerita. !ita ingin program yang kita buat berjalan sesuai dengan yang kita inginkan. Artinya program tersebut harus benar secara logika. Program yang benar secara logika disebut memiliki semantik yang benar. $i situs ini kita akan mempelajari tentang sintaks dan semantik dari dari setiap bahasa pemrograman %a&a. Sintaks mudah dihafal, tetapi semantik lebih seperti perasaan. "ntuk itu, coba do'nload dan jalankan contoh(contoh program sehingga kita dapat memahami bagaimana setiap program bekerja.

Melihat lebih dekat SelamatDatang


Applikasi Selamat$atang memiliki ) komponen, yaitu *

definisi paket (package) komentar definisi kelas (class) metode main

package selamatdatang; public class SelamatDatang { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("Selamat Datang!"); } }

Definisi paket (package)


package selamatdatang;

Package dalam %a&a merupakan kumpulan dari berbagai kode yang terangkum dalam satu paket. "ntuk memudahkan penulisan dan pembagian logika suatu program, satu paket terbagi menjadi beberapa berkas (file) di mana setiap file memiliki fungsi atau tugas yang sangat khusus, misalnya satu file berfungsi untuk mendeklarasikan konstanta dan kelas, sementara file yang lain berisi implementasi kelas dan prosedurnya. Pada contoh aplikasi Selamat$atang di atas, paket ini hanya berisi satu buah file yang isinya terdiri dari satu kelas dan satu metode. $efinisi paket tidak selalu diperlukan, tetapi hal ini merupakan kebiasaan baik untuk melatih kita berfikir secara logis dan sistematis. K menta!
/** * @param args */ // TODO Auto-generated method stub

!omentar tidak akan diproses oleh kompiler tetapi berguna bagi programmer lain. Bahasa %a&a memiliki + jenis komentar *

,- text -, . /ompiler akan mengabaikan kata kata antara ,- dan -, ,-- documentation -, . 0ni merupakan komentar yang dipergunakan khusus untuk dokumentasi. !ompiler akan mengabaikan komentar dari ,- hingga -,. Alat bantu javadoc akan memproses komentar dokumentasi untuk membuat dokumentasi secara otomatis dari sumber program. ,, text . !ompiler akan mengabaikan segala sesuatu dari ,, hingga akhir baris

Definisi Kelas
public class SelamatDatang { ... }

!elas merupakan bagian integral dari bahasa %a&a karena %a&a merupakan bahasa berorientasi objek. Setiap aplikasi ha!us terdiri dari satu kelas. $i sini kita definisikan kelas Selamat$atang sebagai kelas utama. Met de main $alam bahasa pemrograman %a&a, setiap aplikasi harus memiliki satu buah metode main yang bentuknya seperti berikut *

public static void main(String[] args) { ... }

Metode main mirip dengan fungsi main pada bahasa /,/11 di mana fungsi ini merupakan pintu gerbang dimulanya suatu program. Metoda main dapat dipanggil dengan menyertakan &ariabel, baik hanya satu &ariabel, banyak &ariabel atau bahkan tidak ada sama sekali. 2ang terakhir adalah perintah berikut untuk menampilkan Selamat $atang pada komputer Anda.
System.out.println("Selamat Datang!");

Perintah tersebut menggunakan pustaka inti %a&a, yaitu kelas Sistem.

"a!iabel dan #ipe Data


3ama merupakan hal penting dalam teknik pemrograman. $alam suatu program, nama digunakan untuk menyebut sesuatu. "ntuk menggunakan 4sesuatu4 tersebut, programmer harus mengerti bagaimana aturan pemberian nama dan aturan untuk menggunakan nama tersebut dalam programnya. Atau dengan kata lain, programmer harus mengerti sintaks dan semantik dari nama. Menurut aturan sintaks %a&a, nama merupakan rangkaian dari 5 atau lebih karakter. arus dimulai dengan huruf dan harus terdiri dari huruf, angka atau karakter garis ba'ah 676. Berikut ini adalah contoh nama yang diperbolehkan*
N n rate x1 !uite"a"long"name #ello$orld

urus kecil dan huruf besar dianggap berbeda, sehingga #ello$orld, %ello&orld, #'(()$)*(D, dan adalah nama yang berbeda(beda. Beberapa kata tertentu merupakan nama yang memiliki kegunaan tertentu oleh %a&a, dan tidak dapat dipergunakan oleh programmer. !ata(kata ini disebut reser&ed 'ords (kata(kata cadangan) misalnya* class, public, static, if, else, while, dan lain(lain.
%e(()&o*(D

al lain yang penting adalah compound names atau nama campuran, yaitu yang merupakan nama biasa yang dihubungkan dengan titik, misalnya System.out.println. 0denya adalah 4sesuatu4 pada %a&a dapat terdiri dari 4sesuatu4 yang lain. 3ama System.out.println artinya System menampung out dan out menampung println. !ita sebut 4sesuatu4 sebagai identifier (pengenal) tidak peduli apakah ia berupa nama tunggal atau campuran. Program melakukan manipulasi data yang disimpan dalam memori. $alam bahasa mesin, data hanya bisa diambil dengan menyebut alamatnya di memori. $alam bahasa pemrograman tingkat tinggi seperti %a&a, nama bisa digunakan untk mengganti alamat data tersebut di memori. #ugas komputer adalah untuk melacak di mana data tersebut di simpan, sedangkan programmer menggunakan nama untuk memerintahkan komputer mengambil data tersebut dari memori. 3ama yang digunakan seperti ini disebut &ariable. 8ariabel sebenarnya berarti lebih kompleks. 8ariabel bukan isi dari data, tapi lokasi di memori yang menyimpan data tersebut. 8ariabel bisa diibaratkan sebagai kotak penyimpanan data, bukan isi kotaknya. !arena data di dalam kotak bisa berubah, &ariabel hanya dapat dipercaya pada satu saat saja, 'alaupun tempatnya selalu sama.

$alam bahasa %a&a, satu(satunya cara untuk memasukkan data ke dalam &ariabel adalah dengan menggunakan assignment statement, atau pernyataan pemberian nilai. Pernyataan ini berbentuk*
+aria,le - e.spresi;

di mana e.spresi menyatakan apapun yang berhubungan dengan nilai suatu data. !etika komputer menjalankan instruksi ini, komputer akan menghitung dan menyimpan hasilnya ke dalam &ariabel. /ontoh*
.e/epatan - 01;

8ariable dalam pernyataan di atas adalah .e/epatan dan ekspresinya adalah angka )9. !omputer menghitung pernyataan ini dan menyimpan )9 ke dalam &ariabel .e/epatan, dan mengganti apapun yang telah disimpan sebelumnya. Sekarang misalnya kita ingin melakukan perhitungan yang lebih kompleks*
2ara. - .e/epatan 3 &a.tu

$i sini, - merupakan operasi perkalian. !omputer mengambil data yang disimpan dalam &ariabel .e/epatan dan &a.tu, melakukan perkalian, dan menyimpan hasilnya dalam 2ara.. 8ariabel dalam bahasa %a&a didesign untuk menyimpan hanya 5 jenis tipe data. !ompiler akan menampilkan kesalahan sinta: apabila &ariabel ini dicoba untuk diberi tipe data jenis lain. ;leh karena itu %a&a disebut bahasa pemrograman bertipe kuat atau strongly typed language. Ada < tipe data primitif dalam bahasa %a&a. Jenis Data boolean /har Byte Short 0nt @ong Cloat double Desk!ipsi anya bisa berisi benar atau salah !arakter "nicode Bilangan bulat Bilangan bulat Bilangan bulat Bilangan bulat Bilangan riil Bilangan riil $ku!an 5(bit 5=(bit <(bit 5=(bit +>(bit =)(bit +>(bit =)(bit (5>? (+>?=< (>5)?)<+=)< (A>>++?>9+=<B)??B<9< ).A)9=B=)B<)5>)=B))e( +>) 5>< +>?=? >5)?)<+=)? A>>++?>9+=<B)??B<9? Minimum Maksimum

5.)95>A<)=)+>)<5?9?e()B +.)9><>+)==+<B><<=9e1+< 5.?A?=A+5+)<=>+5B?9e1+9<

Suatu &ariabel baru dapat digunakan apabila telah dideklarasikan. Pernyataan deklarasi &ariabel digunakan untuk mendeklarasikan satu atau lebih &ariabel dan memberinya nama. !etika komputer mengeksekusi deklarasi &ariabel, komputer akan menyediakan ruangan di memori kemudian menyimpan alamat ini sesuai dengan nama &ariabel yang diberikan. $eklarasi &ariable berbentuk seperti *

nama"tipe nama"+aria,el;

nama7&ariabel dapat berupa sebuah nama &ariabel atau beberapa nama sekaligus yang dipisah dengan koma. Daya pemrograman yang baik yaitu dengan mendeklarasikan satu &ariabel dalam satu pernyataan, kecuali &ariabel tersebut berhubungan erat satu sama lain. Misalnya*
float num; String nama; String nama; boolean ,ol; int x4y;

Atau pendeklarasian &ariabel bisa juga dilakukan sekaligus dengan pemberian nilainya, seperti pada contoh berikut*
int num - 1111; char /% - 5e5; float ang.a - 61. 10; boolean ,ol - true;

Jenis-%enis "a!iabel %a&a memiliki beberapa jenis &ariabel yang dapat dikelompokkan sebagai berikut *

0nstance 8ariables (tidak statis). $alam bahasa pemrograman berorientasi objek, objek menyimpan &ariabel yang tidak dideklarasikan dengan kata kunci static dalam kategori non( statis, atau dapat berubah(ubah. Suatu kelas dapat dijelmakan ke dalam beberapa objek. 3ilai yang terkandung dalam &ariabel tak(statis ini berbeda untuk setiap objeknya. /lass 8ariables (statis). 8ariabel ini merupakan bagian integral dari suatu kelas, dan tidak ada satu objek pun yang dapat menyatakan kepemilikan atas &ariabel ini. 8ariabel yang dideklarasikan sebagai statis digunakan bersama oleh semua objek. 8ariabel ini lebih bersifat global yang nilainya sama untuk setiap objek pada kelas yang bersangkutan. @ocal 8ariables. 8ariabel ini didefinisikan di dalam suatu metoda (method) atau dalam suatu prosedur. 8ariabel ini bersifat lokal karena hanya dapat diakses oleh metoda atau prosedur tersebut. Parameter. Paramater atau argumen adalah &ariabel yang digunakan pada saat suatu metoda atau prosedur dipanggil. Parameter berguna untuk memberikan nilai a'al untuk diteruskan (pass) ke dalam suatu prosedur atau metoda.

&ite!al Pada bagian ini akan dijelaskan tentang literal, yaitu rangkaian kata atau huruf yang menyatakan suatu nilai. Misalnya
int ang.a - 11;

Pada pernyataan di atas, yang dinamakan literal adalah 59, karena 59 berarti bilangan bulat atau integer. Pada bahasa pemrograman ja&a, terdapat beberapa jenis literal yang melambangkan bilangan bulat, riil, kalimat, atau boolean.

&ite!al Bilangan Bulat Bilangan bulat dapat dilambangkan dalam beberapa bentuk. Bilangan bulat biasa dilambangkan dengan deretan angka yang dimulai dengan angka yang bukan nol.
int ang.a - 611;

Bilangan oktal adalah bilangan bulat berbasis <, yang berarti hanya dapat terdiri dari angka(angka 9 hingga ?. Bilangan oktal ditulis seperti bilangan bulat biasa dimulai dengan 9.
// 22 basis delapan atau 18 dalam desimal int ang.a - 177;

Bilangan heksadesimal adalah bilangan berbasis 5=. Bilangan heksadesimal dilambangkan dengan 9 hingga A dan a hingga f dan dimulai dengan 9:.
// 2a heksadesimal atau 42 dalam desimal int ang.a - 1x7a;

@ong integer. Seperti dijelaskan pada bab terdahulu long integer membutuhkan memori sebesar =)bit, yang artinya kita dapat menyimpan bilangan bulat hingga > E =). "ntuk merepresentasikan long integer, tambahkan huruf @ pada akhir bilangan.
int ang.a - 77(;

&ite!al Ka!akte! !ita dapat melambangkan suatu karakter dengan tanda petik tunggal misalnya FaG atau F+H atau FIG. Suatu karakter dapat juga dilambangkan dengan kode AS/00 nya. /aranya dengan memulainya dengan Ju99 (garis miring terbalik) kemudian diikuti dengan kode AS/00 nya dalam bentuk heksadesimal.
// huruf 'A' dalam AS !! char %uru8 - 5\u11015;

Selain itu ada beberapa karakter lain selain alfabet yang dapat dilambangkan dengan escape seKuence. Berikut ini beberapa contohnya. Jn I tombol enter atau baris baru. Jr I carriage return. Jt I tombol tab. Jb I tombol backspace. JJ I karakter J JG I karakter F

JL I karakter L &ite!al B lean

3ilai true dan false pada ja&a merupakan literal boolean. Suatu &ariabel bertipe boolean hanya dapat memiliki nilai true atau false.
boolean o. - true;

0ngat bah'a boolean true atau false #0$A! menggunakan tanda petik tunggal seperti ekspresi pada karakter. &ite!al Bilangan 'iil Bilangan riil, misalnya (9.995>? atau )5B.<)>, pada ja&a dapat disimpan baik sebagai float atau double. Bilangan real dapat direpresentasikan dalam bentuk desimal biasa, pecahan, atau eksponen (dilambangkan dengan e atau M). #ipe Cloat double $ku!an b)tes bit ) < 'entang (!esisi (%umlah digit) =(? 5B

+> 1,( +.) : 59+< =) 1,( 5.< : 59


+9<

0mbuhan akhir d atau $ dan f atau C dapat pula ditambahkan untuk menentukan tipenya secara eksplisit. Berikut beberapa contohnya.
double d - 9.7:';97; float 8 - 08; float pi - 9.101 <;

&ite!al St!ing String merupakan untaian huruf dan angka yang tersusun menjadi satu kalimat. $alam bahasa ja&a, string bukan merupakan tipe primitif, tetapi merupakan kelas. String pada ja&a tidak disimpan dalam bentuk array seperti pada /. %a&a menyediakan beberapa metoda untuk melakukan penggabungan, modifikasi, atau perbandingan. String ditulis di antara dua tanda petik ganda seperti contoh berikut.
String salam - "Selamat Datang";

String juga dapat mengandung karakter spesial seperti dibahas pada literal karakter. Misalnya
String %allo - "Selamat Datang \"=apa. >residen\""; System.out.println("#allo =am,ang\nSelamat pagi4\nSemoga %ari anda /era%\n";

Berikut ini adalah beberapa contoh lainnya.


// ontoh string kosong String te.s - "";

// ontoh string berisi " te.s - "\""; // String dapat #uga dipisah men#adi beberapa baris te.s - "ini ,aris pertama " ; "dan ini lan2utannya."

&ite!al *ull @iteral terakhir pada bahasa ja&a adalah literal null. 3ull merupakan kondisi di mana suatu objek tidak diberi alokasi memori. Pada saat suatu objek dideklarasikan, komputer akan mengalokasikan memori untuk objek tersebut. Apabila objek tersebut telah selesai dipergunakan, kita dapat melepas lokasi memori yang digunakan oleh objek tersebut sehingga memori itu dapat digunakan oleh objek lain. Berikut ini adalah contohnya
o,2 - null;

@iteral null berfungsi memberi tahu garbage collector (pemulung memori) bah'a objek tersebut tidak lagi terpakai. !emudian memori akan dilepaskan agar dapat digunakan oleh objek lain.

+ nt h (! g!am "a!iabel dan #ipe Data


Berikut ini adalah listing program penghitungan bunga bank. !ode program dapat anda unduh dalam bentuk Nip file atau melalui S83 di alamat berikut * http,--bela%a!%ava.g glec de.c m-svn-t!unk-BungaBank @ihat cara mengimpor contoh(contoh program ke dalam Mclipse di Bab 00 ( 0nstalasi.
package ,unga,an.; public class =unga=an. { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub /$ Deklarasi %ariable $/ double po.o.; // nilai in%estasi double su.u,unga; // suku bunga bank double ,unga; // nilai bunga /$ &erhitungan $/ po.o. - 71111; su.u,unga - 1.11; // sama dengan 1'( ,unga - po.o. 3 su.u,unga; po.o. - po.o. ; ,unga; /$ etak hasil keluaran $/

System.out.print("=unga yang di%asil.an adala% *p. "); System.out.println(,unga); System.out.print("Nilai in+estasi setela% 1 ta%un adala% *p. "); System.out.println(po.o.);

Berikut adalah hasil keluarannya *

St!ing/ 0b%ek dan Sub!utin


Bagian sebelumnya memperkenalkan < jenis tipe data primitif dan tipe data String. Perbedaan mendasar antara tipe primitif dan String adalah * nilai dari tipe String berupa objek. ;bjek akan dibahas pada bagian lain mengenai kelas (class). $i bagian ini kita akan belajar bagaimana String digunakan dan juga mempelajari konsep pemrograman penting yang lain, yaitu subrutin. Subrutin adalah kumpulan instruksi program yang digabungkan sehingga memiliki fungsi tertentu. $alam bahasa %a&a, setiap subrutin termasuk di dalam bagian suatu kelas atau objek. %a&a menyediakan kelas standar yang siap digunakan. 3ilai tipe String adalah objek yang memiliki kumpulan subrutin yang dapat digunakan untuk memanipulasi String tersetbut. !ita bisa memanggil subrutin tersebut tanpa harus mengerti bagaimana subrutin tersebut bekerja. Sebenarnya ini adalah tujuan subrutin, yaitu sekumpulan perintah yang memiliki fungsi tertentu tanpa harus mengetahui secara detail apa yang terjadi di dalam. !elas terdiri dari &ariabel dan subrutin yang disimpan di dalamnya. 8ariabel dan subrutin ini disebut static member (anggota statis). /ontohnya adalah pada program SelamatDatang, kelas SelamatDatang memiliki anggota main() yang merupakan anggota statis kelas itu. Anggota yang berupa static member diberi imbuhan static, seperti pada main(). Cungsi kelas yang lain adalah untuk mendeskripsikan suatu objek. !elas di sini berfungsi seperti tipe data. 3ilai yang disimpan dalam tipe data itu adalah objek. Misalnya String sebenarnya merupakan nama kelas yang disediakan bahasa %a&a. String juga berupa tipe data dan kalimat seperti 4Selamat $atangO4 adalah isi dari tipe data String. !egunaan kelas baik sebagai gabungan subrutin ataupun sebagai objek sering membingungkan. Misalnya kelas String juga menyimpan beberapa subrutin statik selain juga sebagai tipe data. /ontoh kelas standar lainnya adalah ?at% yang berisi kumpulan subrutin statik untuk melakukan berbagai perhitungan matematis. Kelas sebagai tipe data

Mari mulai dengan melihat kembali subrutin System.out.print. Subrutin ini digunakan untuk menampilkan pesan kepada user. Misalnya System.out.print("Selamat datang!") menampilkan pesan Selamat datangO System merupakan salah satu kelas standar %a&a. Salah satu anggotanya bernama out. !arena &ariable ini berada di dalam kelas System, kita harus memanggilnya dengan nama lengkapnya yaitu System.out. 8ariabel System.out merupakan suatu objek, dan objek itu memiliki subrutin yang bernama print. Pengenal campuran System.out.print mengacu pada subrutin print di dalam objek out dalam kelas System.

("ntuk melihat dari sisi lain, sebetulnya System.out merupakan objek dari kelas >rintStream. >rintStream adalah salah satu kelas standar %a&a. ;bjek dengan tipe >rintStream adalah objek tempat informasi bisa dicetak. Setiap objek yang bertipe >rintStream memiliki subrutin bernama print yang bertugas untuk mencetak sesuatu ke medium tersebut. $alam hal ini System.out adalah tujuan tempat print dilakukan. ;bjek lain yang bertipe >rintStream bisa mengirim informasi ke tujuan lain, misalnya file atau net'ork atau ke komputer lain. 0ni adalah esensi dari pemrograman berorientasi objek, di mana beberapa hal yang memiliki kesamaan ( dalam hal >rintStream sama(sama sebagai tempat tujuan print ( dapat digunakan dengan cara yang sama, yaitu memanggil subrutin print.) !arena nama &ariabel, nama kelas, dan nama subrutin berbentuk hampir sama, ada baiknya untuk membedakannya sehingga di kemudian hari program dapat dibaca dengan jelas. !elas standar %a&a menggunakan nama yang selalu dimulai dengan huruf besar, sedangkan nama &ariabel dimulai dengan huruf kecil. 0ni bukan sintaks %a&a, tetapi lebih seperti kon&ensi. Setiap orang bebas menggunakan kon&ensinya masing(masing, tetapi apabila pemrograman dilakukan secara bersama(sama, seperti pada open source programming, kon&ensi yang sama akan sangat memudahkan orang lain membaca dan menguji program yang kita buat. 3ama subrutin juga dimulai dengan huruf kecil, sama dengan nama &ariabel. #etapi subrutin harus diikuti dengan tanda buka kurung sehingga masih mudah dibedakan dengan nama &ariabel.

Kelas sebagai kumpulan sub!utin dan va!iabel statik

Selain sebagai tipe data, kelas System juga memiliki subrutin statik yang bernama exit. Memanggil System.exit akan menghentikan jalannya program, dan digunakan apabila karena suatu hal (misalnya program telah selesai atau adanya error) program harus dihentikan. Subrutin exit menerima parameter bilangan bulat, misalnya System.exit(1) atau System.exit(1), untuk memberitahu kepada sistem operasi alasan kenapa program dihentikan. Status 9 berarti program berhenti normal tanpa adanya error, sedangkan status lain berarti ada sesuatu yang salah yang terjadi di tengah eksekusi program tersebut. Setiap subrutin melakukan fungsi tertentu. Beberapa di antaranya melakukan perhitungan lalu melaporkan hasil perhitungannya. Ada juga yang berfungsi untuk mengambil data dari tempat tertentu dan melaporkan data yang didapat. Subrutin jenis ini disebut function (fungsi). Cungsi adalah subrutin yang mengembalikan (return) suatu nilai. 3ilai yang dikembalikan akan digunakan lebih lanjut dalam program. Sebagai contoh adalah fungsi untuk menghitung akar kuadrat dari suatu bilangan. %a&a memiliki fungsi seperti itu yang disebut ?at%.s!rt. Cungsi ini merupakan anggota statik dari kelas yang bernama ?at%. %ika : adalah suatu bilangan, makan ?at%.s!rt(x) menghitung akar kuadrat dari : dan mengembalikan hasil perhitungannya. !arena ?at%.s!rt(x) mengembalikan suatu bilangan, kita tidak bisa memanggil fungsi ini seperti
?at%.s!rt(x); // Tidak masuk akal)

!ita tentunya ingin menggunakan hasilnya untuk instruksi selanjutnya, misalnya menuliskan hasilnya di layar seperti
System.out.print( ?at%.s!rt(x) ); pan2angDiagonal - ?at%.s!rt(x); // *enampilkan akar kuadrat + di la,ar-

atau menyimpan hasilnya pada &ariabel lain, seperti

Kelas Math

!elas ?at% memiliki banyak fungsi statik. Beberapa yang penting di antaranya*
?at%.a,s(x),

menghitung nilai mutlak (absolut) dari :. 3ilai mutlak bilangan negatif adalah bilangan positif, dan bilangan positif tetap bilangan positif. Cungsi trigonometri ?at%.sin(x), ?at%./os(x), and ?at%.tan(x). ("ntuk semua fungsi trigonometri, sudut memiliki satuan radian, bukan derajat) Cungsi trigonometri in&erse, yang mencari sudut dari suatu nilai trigonometric, kebalikan dari fungsi trigonometri, seperti arcus sin, arcus cos, dan arcus tangen. ?at%.asin(x), ?at%.a/os(x), and ?at%.atan(x). ?at%.exp(x), menghitung pangkat dari bilangan natural e, atau e:. $an logaritma natural loge : atau ln : bisa dihitung dengan menggunakan fungsi ?at%.log(x). ?at%.po&(x4y) menghitung :y atau : pangkat y ?at%.8loor(x) menghitung pembulatan ke ba'ah dari suatu bilangan riil, misalnya +.<) akan dibulatkan ke ba'ah menjadi +.9 ?at%.random() memilih bilangan acak di antara 9.9 dan 5.9. !omputer memiliki algoritma perhitungan tertentu yang hasilnya bilangan acak (meskipun bulan bilangan yang betul(betul acak, tetapi cukup untuk kebanyakan fungsi)

Paremeter (nilai di dalam kurung) fungsi(fungsi di atas bisa bertipe numerik apa saja (misalnya double, int, dll), tetapi keluarannya bertipe double, kecuali abs(:) yang tipe keluarannya sama dengan tipe parameternya. Math.random() tidak memiliki parameter, tetapi tanda kurungnya harus tetap ditulis untuk membedakan fungsi dan &ariabel. /ontoh fungsi lain yang tidak memiliki parameter adalah System./urrent@ime?illis() yang berguna untuk mengambil 'aktu saat ini dalam satuan milidetik, dihitung sejak 5 %anuri 5A?9 'aktu DM#. Satu milidetik sama dengan 5 per 5999 detik. !eluarannya bertipe long. "ntuk menghitung 'aktu yang diperlukan untuk menjalankan suatu perintah, jalankan fungsi System./urrent@ime?illis() sebelum dan sesudah suatu instruksi dijalankan. Perbedaannya adalah 'aktu yang diperlukan untuk menjalankan suatu instruksi.

+ nt h Kelas Math

Berikut ini adalah listing program untuk melakukan beberapa perhitungan matematika, menampilkan hasilnya di layar, dan melaporkan 'aktu yang diperlukan untuk melakukan perhitungan tersebut. !ode program dapat anda unduh dalam bentuk Nip file atau melalui S83 di alamat berikut * http,--bela%a!%ava.g glec de.c m-svn-t!unk-1aktuK mputasi @ihat cara mengimpor contoh(contoh program ke dalam Mclipse di Bab 00 ( 0nstalasi.
package &a.tu.omputasi; public class $a.tuAomputasi { /** * Program ini akan melakukan beberapa perhitungan matematika,

* menampilkan hasilnya di layar, dan melaporkan waktu yang diperlukan * untuk melakukan perhitungan tersebut * * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub long &a.tu?ulai; long &a.tuSelesai; &a.tu?ulai - System./urrent@ime?illis(); double pan2ang4 le,ar4 sisi?iring; pan2ang - 1B.1; le,ar - 7:; // sisi segitiga siku-siku

sisi?iring - ?at%.s!rt(pan2ang3pan2ang ; le,ar3le,ar); System.out.print("Segitiga si.u6si.u dengan pan2ang 1B dan le,ar 7: memili.i sisi miring "); System.out.println(sisi?iring); System.out.println("\nSe/ara matematis4 sin(x)3sin(x) ; " ; "/os(x)3/os(x) 6 1 - 1"); System.out.println("?ari .ita /e. untu. x - 1 C"); System.out.print("sin(1)3sin(1) ; /os(1)3/os(1) 6 1 - "); System.out.println( ?at%.sin(1)3?at%.sin(1) ; ?at%./os(1)3?at%./os(1) 6 1 ); System.out.println("(?ung.in a.an ada .esala%an desimal dalam " ; "per%itungan ,ilangan real!)"); System.out.print("\nDni adala% ,ilangan a/a. C "); System.out.println(?at%.random()); &a.tuSelesai - System./urrent@ime?illis(); System.out.print("\n@otal &a.tu per%itungan C "); System.out.print((&a.tuSelesai 6 &a.tu?ulai)E1111.1); System.out.println(" deti.");

Berikut adalah hasil keluarannya :

Kelas St!ing
3ilai suatu String adalah objek. ;bjek ini berisi rangkaian huruf yang membentuk string. ;bjek tersebut juga berisi subrutin. Misalnya lengt% adalah fungsi yang menghitung panjang suatu string, atau jumlah karakter dalam suatu string. Misalnya string str yang dideklarasikan sebagai berikut *
String str; str - "#ari ini /era% se.ali!"

"ntuk menghitung jumlah karakter dalam string str, panggil fungsi str.lengt%() yang keluarannya bertipe int. Cungsi ini tidak membutuhkan parameter. Cungsi lengt% merupakan anggota kelas String dan dapat digunakan oleh semua data yang bertipe String. $an juga bisa digunakan oleh literal string, misalnya program berikut menghitung jumlah karakter dalam string 40ndonesia Paya4 *
System.out.print("Fumla% .ara.ter dalam \"Dndonesia *aya\" adala% "); System.out.print("Dndonesia *aya".lengt%()); System.out.println(" .ara.ter");

!elas String memiliki beberapa fungsi di antaranya *

adalah fungsi yang mengembalikan nilai boolean (true atau false). Cungsi ini akan menghasilkan true jika s> sama dengan s5, dan salah jika tidak. !esamaan yang diuji adalah kesamaan persis baik kapitalnya maupun urutan huruf(hurufnya. s1.e!ualsDgnoreGase(s7) juga menghasilkan nilai boolean yang menguji apakah string s> sama dengan s5 dengan tidak membandingkan kapitalnya. 4!ucing4.eKuals0gnore/ase(4kucing4) menghasilkan true. s1.lengt%(). Seperti diulas sebelumnya, fungsi ini menghitung jumlah karakter dalam string s5. s1./%arHt(N). 3 adalah integer (bilangan bulat). Cungsi ini mengembalikan karakter ke(3 dari string s5. !arakter pertama dihitung sebagai posisi ke(9. s1./%arHt(1) berarti mengambil karakter pertama, sedangkan s1./%arHt(1) berarti mengambil karakter ke(>, dan seterusnya. !arakter terakhir memiliki indeks s1.lengt%() 6 1. Cungsi ini akan mengeluarkan pesan kesalahan apabila 3 bernilai negatif atau lebih besar dari s1.lengt%() 6 1. s1.su,string(N4?), di mana 3 dan M bilangan bulat. Cungsi ini mengambil potongan string antara karakter ke(3 hingga karakter M(5. /atatan bah'a karakter ke(M tidak ikut diambil. Misalnya, 42alan layang".su,string(140) menghasilkan 4ala4. s1.index)8(s7) mengembalikan nilai integer. Cungsi ini mencari string s> di dalam string s5, dan apabila ditemukan mengembalikan posisi a'al s> di dalam s5. %ika tidak ditemukan, fungsi ini akan mengembalikan (5. Cungsi ini bisa juga digunakan untuk mencari string s> dalam s5 setelah posisi ke(3 dalam string s5. Misalnya, ".elapa muda".index)8("a") menghasilkan +, sedangkan ".elapa muda".index)8("a"4I) menghasilkan 59. s1./ompare@o(s7) membandingkan s> dan s5. %ika s5 dan s> sama, hasilnya 9. %ika s5 kurang dari s>, hasilnya bilangan negatif , dan jika s5 lebih besar dari s>, hasilnya bilangan positif. 4!urang dari4 atau 4lebih dari4 mengacu pada urutannya dalam abjad jika keduanya huruf kecil atau keduanya huruf besar. %ika kapitalnya berbeda, perbandingannya bergantung pada nilai AS/00(nya. s1.toJpperGase() adalah fungsi untuk mengubah seluruh huruf dalam s5 menjadi huruf besar. s1.to(o&erGase() berfungsi untuk mengubah huruf dalam s5 menjadi hurug kecil. s1.trim() adalah berfungsi menghapus karakter yang tak bisa dicetak, misalnya spasi, baris baru, enter, yang ada sebelum atau sesudah suatu kalimat. Misalnya " selamat pagi ,u ".trim() menghasilkan 4selamat pagi bu4.
s1.e!uals(s7)

"ntuk s1.toJpperGase(), s1.to(o&erGase(), s1.trim() nilai s5 tidak berubah. Cungsi ini melakukan perhitungan kemudian mengembalikan string baru hasil perhitungan tersebut. !ita bisa juga menggunakan tanda 1 menyambung > string. Misalnya 4mata4 1 4hari4 menjadi 4matahari4. 3ilai yang dapat disambungkan bukan hanya string dan string, tetapi juga string dan angka, misalnya 4jalan4 1 > menjadi 4jalan>4.

+ nt h Kelas St!ing

Berikut ini adalah listing program untuk melakukan beberapa contoh menggunakan kelas String, menampilkan hasilnya di layar, dan melaporkan 'aktu yang diperlukan untuk melakukan perhitungan tersebut. !ode program dapat anda unduh dalam bentuk Nip file atau melalui S83 di alamat berikut * http,--bela%a!%ava.g glec de.c m-svn-t!unk-+ nt hSt!ing @ihat cara mengimpor contoh(contoh program ke dalam Mclipse di Bab 00 ( 0nstalasi.
package /onto%string;

public class Gonto%String { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub // demo String-length./ dan operator 0 untuk menghubungkan karakter String str; str - "#ari ini /era% se.ali!"; System.out.println(">an2ang string \"" ; str ; "\" adala% " ; str.lengt%()); System.out.print("Fumla% .ara.ter dalam \"Dndonesia *aya\" adala% System.out.print("Dndonesia *aya".lengt%()); System.out.println(" .ara.ter"); // demo e1uals dan 2ompareTo System.out.println("\"2am,u\" - \"Fam,u\"K " ; "2am,u".e!uals("Fam,u")); System.out.println("ignore /ase \"2am,u\" - \"Fam,u\"K " ; "2am,u".e!ualsDgnoreGase("Fam,u")); } }

");

Berikut adalah hasil keluarannya *

0pe!at ! 0pe!at ! 2!itmatika


1 ;perator penjumlahan (juga sebagai penyambung string) ( ;perator pengurangan - ;perator perkalian , ;perator pembagian Q ;perator sisa pembagian ;perator aritmatika digunakan untuk melakukan operasi matematika, seperti penambahan, pengurangan, pembagian, dan modulo (atau sisa pembagian). /ontoh penggunaan * Simbol 3ama operator /ontoh penggunaan

1 ( , Q 1

;perator penjumlahan ;perator pengurangan ;perator perkalian ;perator pembagian ;perator sisa pembagian

n I n 1 5R n I n ( 5R n I n - 5R n I n , 5R n I n Q 5R

;perator penyambung string n I 4saya 414tidur4R /ontoh kode program yang dapat Anda unduh dalam bentuk Nip file atau melalui S83 di alamat berikut * http,--bela%a!%ava.g glec de.c m-svn-t!unk-0pe!at !2!itmatika @ihat cara mengimpor contoh(contoh program ke dalam Mclipse di Bab 00 ( 0nstalasi.
package operatoraritmati.a; public class )peratorHritmati.a { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int int int int x y L g - 7; - ; - 9; - 1;

g - x ; y; System.out.println(">en2umla%an (x;y) C " ; g); g - y 6 x; System.out.println(">engurangan (y6x) C " ; g); g - x 3 y; System.out.println(">er.alian (x3y) C " ; g);

g - y E x; System.out.println(">em,agian (yEx) C " ; g); g - L M y; System.out.println("Sisa pem,agian (LMx) C " ; g); g - x ; (y 3 (LEx)); System.out.println("#asilnya se.arang C " ; g); } }

!eluaran Program *

0pe!at ! #unggal

1 ;perator plusR menyatakan nilai positif (setiap angka tanpa tanda ini akan dianggap sebagai positif) ( ;perator minusR menyatakan nilai negatif, dapat pula digunakan untuk menegatifkan suatu bilangan 11 ;perator kenaikanR menambah suatu bilangan dengan 5 (( ;perator penurunanR mengurangkan suatu bilangan dengan 5 O ;perator la'anR membalik nilai suatu boolean

;perator tunggal hanya membutuhkan satu operan untuk melakukan operasinya. ;perator ini tidak dapat digunakan untuk &ariabel final, karena &ariabel final berupa konstanta yang tidak dapat diubah(ubah. Beberapa jenis operator tunggal diberikan pada tabel di ba'ah ini. /ontoh
ang.a - ;1; ang.a - 61;

Simbol 3ama operator ;perasi 1 ( 11 (( O

;perator plus menyatakan nilai positif ;perator minus ;perator kenaikan ;perator penurunan

menyatakan nilai negatif, dapat pula digunakan ang.a - 6ang.a; // untuk menegatifkan suatu bilangan sekarang angka bernilai 1 menambah suatu bilangan dengan 5 mengurangkan suatu bilangan dengan 5
ang.a - ;;ang.a; ang.a - 66ang.a;

o. - !true; ;perator la'an membalik nilai suatu boolean ;perator kenaikan dan penurunan dapat diletakkan di belakang atau di depan suatu &ariabel. %ika diletakkan di depan (11: atau ((:), penambahan,pengurangan dilakukan sebelumnya, sedangkan apabila diletakkan di akhir (:11 atau :(() penambahan,pengurangan dilakukan setelahnya. Salau bagaimanapun pada akhirnya keduanya akan menghasilkan : I :15 atau : I :(5. Mari kita lihat contohnya untuk membedakan lebih jelas perbedaan penempatan operator tunggal 11 dan (( /ontoh kode program yang dapat Anda unduh dalam bentuk Nip file atau melalui S83 di alamat berikut * http,--bela%a!%ava.g glec de.c m-svn-t!unk-0pe!at !#unggal @ihat cara mengimpor contoh(contoh program ke dalam Mclipse di Bab 00 ( 0nstalasi. package operatortunggal; public class )perator@unggal { /** * Contoh program menggunakan operator tunggal * * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int x - 1; int y - 1; y - ;;x; System.out.println("Gonto% operator pada pre8ix (a&alan)"); System.out.println("666666666666666666666666666"); System.out.println("Nilai x ,aru C " ; x); System.out.println("Nilai y - ;;x C " ; y); x - 1; y - 1; y - x;;; System.out.println("\nGonto% operator pada su8ix (a.%iran)");

System.out.println("666666666666666666666666666"); System.out.println("Nilai x ,aru C" ; x); System.out.println("Nilai y - x;; C" ; y); } }

%alankan program tersebut dan lihat hasilnya. Apabila operator 11 diletakkan di a'al (prefi:), maka nilai 4:4 dan 4y4 akan sama, karena penambahan nilai 4:4 dilakukan terlebih dahulu, lalu hasilnya diberi kepada 4y4. Apabila operator 11 diletakkan di akhir (sufi:), nilai 4y4 adalah nilai 4:4 terdahulu. %a&a akan memberi nilai 4y4 dengan nilai 4:4 sebelum operasi 11 dilakukan. Baru kemudian nilai 4:4 ditambahkan. Berikut ini adalah screenshot keluarannya *

0pe!at ! (embanding/ B lean dan K ndisi

;perator kondisi (conditional operator) menghasilkan nilai true atau false tergantung dari &ariabelnya, dalam hal ini operasinya dilakukan pada dua operand. ;perator boolean adalah operator kondisi yang kedua operandnya berupa nilai boolean (true atau false), sedangkan ;perator Pembanding membandingkan > nilai seperti pada operasi matematika. +atatan * Pada objek, seperti String, operasi pembanding akan membandingkan alamat memory tempat objek itu disimpan, bukan membandingkan isinya. "ntuk membandingkan isi String, gunakan e!uals(), e!ualsDgnoreGase(), dan /ompare@o() seperti dibahas pada bagian sebelumnya.

Simb l II OI T TI U UI VV WW O X*

*ama pe!at ! Sama dengan #idak sama dengan @ebih besar @ebih kecil @ebih kecil atau sama dengan /onditional A3$ /onditional ;P 3;#

+ nt h b I (5 II >)R b I (5 II >)R b I (5 T >)R b I (5 U >)R b I (5 UI >)R b I true VV falseR b I true WW falseR b I OtrueR

@ebih besar atau sama dengan b I (5 TI >)R

Bentuk pendek dari if(then(else 0pe!at ! b lean 2*D ;perator kondisi A3$ menghasilkan 4true4 apabila kedua operandnya bernilai 4true4. %ika salah satunya atau keduanya 4false4, operator ini menghasilkan 4false4. Berikut ini tabel kebenaran operasi A3$. 0p3 atau 45p3 0p6 atau 45p6 7asil true false true true false false

true true false false

false false ;perator VV akan menge&aluasi ;p> (di sebelah kanan) A32A jika operand 5 bernilai 4true4. Seperti terlihat dari tabel di atas, apabila ;p5 (di sebelah kiri) bernilai 4false4, hasilnya akan selalu 4false4 tidak tergantung pada isi dari ;p>. 0pe!at ! k ndisi 0' ;perator kondisi ;P menghasilkan 4true4 jika salah satu operandnya bernilai 4true4. %ika keduanya 4false4, operator ini menghasilkan 4false4. Berikut ini table kebenaran oeprasi ;P. 0p3 atau 45p3 0p6 atau 45p6 7asil true false true true true true

true true false false

false false ;perator WW akan menge&aluasi ;p> (di sebelah kanan) A32A jika operand 5 bernilai 4false4. Seperti terlihat dari tabel di atas, apabila ;p5 (di sebelah kiri) bernilai 4true4, hasilnya akan selalu 4true4 tidak tergantung pada isi dari ;p>.

0pe!at ! *0#

;perator 3;# (4O4) melakukan operasi boolean 3;# pada operand atau ekspresi tunggal. ;perator ini mengecek nilai boolean dari suatu operand atau e:presi kemudian membalik nilainya (dari true ke false atau false ke true). Berikut ini adalah tabel kebenaran operator 3;#. 0p3 7asil

true false false true 0pe!at ! #e!na!) (8,) %a&a memiliki operator berkondisi lain yang disebut ternary 4X*4, yang pada dasarnya merupakan bentuk pendek dari if(then(else. Secara umum
.ondisi K 2i.a",enar C 2i.a"sala%

Pada dasarnya operator 4X*4 akan menge&aluasi 4kondisi4. Apabila kondisi bernilai 4true4, operator akan mengembalikan 4jika7benar4, tetapi apabila 4kondisi4 bernilai 4false4, operator akan mengembalika 4jika7salah4. Misalnya
x - (1 N 7) K 11 C 71

$ari contoh di atas, 4:4 akan memiliki nilai >9, karena ekspresi (5 T >) adalah salah (atau 4false4). /ontoh kode program yang dapat Anda unduh dalam bentuk Nip file atau melalui S83 di alamat berikut * http,--bela%a!%ava.g glec de.c m-svn-t!unk-0pe!at !K ndisi
package operator.ondisi; public class )peratorAondisi { /** * Contoh program menggunakan operator kondisi * * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int x - ; int y - 114 ang.a - 1; boolean ,l - true; if((x -- ) OO (x P y)) System.out.println("Nilai x adala% " ; x); if((x -- y) QQ (y N 1)) System.out.println("Nilai y le,i% ,esar dari x"); ang.a - ,l K x C y; System.out.println("Hng.a yang .eluar adala% " ; ang.a); } }

Berikut adalah hasil keluarannya *

0pe!at ! (embe!i *ilai 9 #)pe +asting

;perator merupakan simbol untuk melakukan perhitungan atau suatu operasi pada satu atau lebih dari satu hal. Setelah kita mendeklarasi dan mengisi suatu &ariabel, kita dapat menggunakan operator untuk melakukan beberapa hal seperti penambahan, pengurangan dan sebagainya. 0pe!at ! (embe!i *ilai I ;perator pemberi nilai ;perator penugasan dan pemberian nilai merupakan operator yang paling umum dalam semua bahasa pemrograman. ;perator ini dilambangkan dengan 4I4 yang digunakan untuk memberikan nilai kepada suatu &ariabel di sebelah kiri operator. %ika &ariabel tersebut telah memiliki nilai, nilainya akan diganti dengan &ariabel atau angka di sebelah kanan operator. ;perator ini juga dapat digunakan untuk memberikan referensi kepada suatu objek. Beberapa contoh *
String nama - "=udi"; boolean de&asa - true; // buat ob#ek baru S%ape s1 - new S%ape(); // beri referensi s1 kepada s2 S%ape s7 - s1;

// nilai sebelumn,a diganti de&asa - false;

Anda dapat juga memberikan nilai kepada beberapa &ariabel secara bersamaan. Misalnya *
x - y - L - 7; x - (y ; L);

;perator 4I4 die&aluasi dari kanan ke kiri. Pada ekspresi pertama, angka > diberikan kepada 4N4, kemudian nilai yang disimpan 4N4 diberikan kepada 4y4, dan kemudian 4y4 ke 4:4 secara bersamaan. Pada ekspresi kedua, nilai hasil e&aluasi pertambahan dimasukkan ke &ariabel 4:4. Pada dasarnya, kedua sisi tanda 4I4 harus memiliki tipe yang sama. Misalnya x - H, : dan A harus memiliki tipe yang sama. Bagaimana jika tidak, misalnya
int H; short =; H - 1:; = - (short)H;

Pada kode di atas, B akan mengambil nilai A yang sudah dikon&ersi ke tipe short. #anda (short) dalam kurung artinya menginstruksikan %a&a untuk mengubah nilai A menjadi short sebelum diberikan kepada B. Perubahan tipe ini disebut type casting. !ita bisa mengubah tipe apa saja, tetapi karena rentang tiap tipe berbeda, maka nilainya belum tentu sama dengan nilai aslinya. Misalnya (short)111111 adalah (+59?>. "ntuk perubahan tipe dari bilangan real (float atau double) ke bilangan bulat, %a&a melakukan type casting dengan memangkas desimalnya. %adi +.B= akan diubah menjadi + dalam bilangan bulat. 3ilai char juga bisa diubah ke dalam bilangan bulat, yaitu dengan menggantinya dengan bilangan "nicode(nya. Selain operasi 4I4, %a&a juga memiliki operator pemberian nilai beruntun, dan dapat digunakan oleh semua operator aritmatika, manipulasi bit, atau pergeseran bit. Misalnya pada ekspresi berikut, nilai 4:4 akan dijumlahkan dengan >, kemudian hasilnya disimpan kembali ke 4:4.
x ;- 7;

#able berikut menunjukkan semua operator pemberian nilai yang dapat Anda gunakan sehingga kode Anda menjadi lebih efisien dan mudah dibaca. ;perator /ontoh Mkspresi setara 1I (I -I ,I QI VI WI EI U UI TTI TTTI : 1I yR : (I yR : -I yR : ,I yR : QI yR : VI yR : WI yR : EI yR : U UI yR : TTI yR : TTTI yR : I (: 1 y)R : I (: ( y)R : I (: - y)R : I (: , y)R : I (: Q y)R : I (: V y)R : I (: W y)R : I (: E y)R : I (: U U y)R : I (: TT y)R : I (: TTT y)R

/ontoh kode program yang dapat Anda unduh dalam bentuk Nip file atau melalui S83 di alamat berikut * http,--bela%a!%ava.g glec de.c m-svn-t!unk-0pe!at !(embe!i*ilai
package operatorpem,erinilai; public class )perator>em,eriNilai { /** * Contoh program menggunakan operator pemberi nilai (assignment operator) * * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int x - ; int y - 11; x ;- y; System.out.println("#asil pen2umla%an C " ; x); x 6- y; System.out.println("#asil pengurangan C " ; x); x 3- y; System.out.println("#asil per.alian C " ; x); x E- y; System.out.println("#asil pem,agian C " ; x); x M- y; System.out.println("Sisa pem,agian C " ; x); x O- y; System.out.println("#asil operasi HND C " ; x); x Q- y; System.out.println("#asil operasi )* C " ; x); x PP- y; System.out.println("#asil operasi pergeseran ,it .e .iri C"; x); } }

!eluaran programnya *

Inte!me:: , Membaca Input da!i $se!

%a&a bukan bahasa pemrograman untuk /onsole (seperti $;S atau @inu:), sehingga untuk mengambil input dari user diperlukan sedikit trik yang tidak sesederhana readln pada bahasa pemrograman lain. $i sini saya akan menjelaskan untuk membuat program yang bisa mengambil input dari konsol teks. $i bagian lain, setelah kita belajar pemrograman berorientasi objek, kita akan menggunakan D"0 untuk mendapatkan interaksi dari user. Membaca St!ing )ang diketik leh use! di k ns l

!ita membutuhkan kelas yang beberapa kelas, yaitu =u88ered*eader, DnputStream*eader, dan System.in (la'an dari System.out yang kita gunakan untuk menampilkan pesan di layar). $ua kelas pertama terdapat dalam package yang dinamakan ja&a.io. "ntuk itu, kita harus menambah satu baris perintah
import 2a+a.io.3

yang berarti mengimport semua kelas dalam paket ja&a.io (tanda - berarti semua). !emudian kita harus juga membuat suatu objek dari kelas BufferedPeader. !elas BufferedPeader adalah kelas abstrak yang menangani baca tulis ke suatu media. !elas ini membutuhkan kelas lain sebagai pekerjanya, yaitu 0nputStreamPeader. $an 0nputStreamPeader membutuhkan media tempat baca tulis dilakukan, yaitu System.in. Semua ini bisa dituliskan dalam satu perintah yaitu *
=u88ered*eader ,r - new =u88ered*eader(new DnputStream*eader(System.in)); $i sini &ariabel ,r merupakan objek yang merupakan jelmaan dari kelas =u88ered*eader. "ntuk memerintahkan %a&a mengambil input dari user, kita gunakan fungsi readline() yang terdapat pada kelas =u88ered*eader, dalam hal ini terealisasi pada objek ,r. nama - ,r.read(ine();

!arena kita berhubungan langsung dengan sistem 0; (input(output) komputer yang harus diasumsikan tidak pasti (misalnya ada masalah pada sistem keyboard, atau komputer sedang bekerja berat sehingga input dari user tidak bisa diambil), kita harus menempatkan fungsi read(ine() pada klausa
try { ... } catch (D)'x/eption ioe) { ... } Perintah di dalam try { ... } adalah

perintah yang kita ingin jalankan pada situasi yang

4mungkin4 tidak berhasil. Parameter pada catch, yaitu D)'x/eption ioe adalah jenis kesalahan yang ingin kita tangkap. $alam hal ini kita ingin menangkap adanya kesalahan 0;, yaitu kesalahan yang bertipe D)'x/eption. Perintah di dalam catch { ... } adalah perintah yang akan dilakukan apabila kesalahan ditangkap. %ika tidak ada kesalahan 0; yang ditemukan, maka bagian ini akan dile'atkan (tidak dijalankan). Mari kita lihat program akhir untuk mengambil input dari user.
package am,ilinput.onsol; import 2a+a.io.3; public class Hm,ilDnputAonsol { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub System.out.print("?asu..an nama Hnda C "); // buat ob#ek baru untuk mengambil input

=u88ered*eader ,r - new =u88ered*eader(new DnputStream*eader(System.in)); // tempat di mana input dari user akan diletakkan String nama - null; try { nama - ,r.read(ine(); } catch(D)'x/eption ioe) { System.out.println("Aesala%an D) pada saat menanya.an nama System.exit(1); } System.out.println("@erima .asi%4 " ; nama); } }

Hnda");

Program tersebut dapat Anda unduh dalam bentuk Nip file atau melalui S83 di http*,,belajarja&a.googlecode.com,s&n,trunk,Ambil0nput!onsol "ntuk menguji program tersebut, jalankan 4'un (T 'un4 atau /trl(C55. !emudian arahkan kursor Anda ke bagian ba'ah di kotak yang bernama + ns le.

Masukkan nama Anda, kemudian hasilnya akan ditampilkan pada baris berikutnya.

Inte!me:: , Mengubah St!ing ke int dan d uble


!ita dapat mengubah tipe data String, misalnya hasil input dari konsol atau dari hasil bacaan file, ke tipe data bilangan untuk pengolahan lebih lanjut. Sebagai contoh, kita akan membuat program untuk menghitung nilai in&estasi setelah n tahun. 0nput yang diminta dari user adalah *

3ama 0n&estasi a'al (Pp) Bunga (Q) Periode (tahun)

$engan menggunakan teknik yang sama pada contoh sebelumnya, kita bisa mengambil input tersebut menggunakan kelas =u88ered*eader seperti berikut.
nama - ,r.read(ine(); stra&al - ,r.read(ine(); str,unga - ,r.read(ine(); strperiode - ,r.read(ine();

#etapi karena keluaran dari read(ine() bertipe String, kita harus mengubahnya menjadi bentuk bilangan agar dapat diproses lebih lanjut. "ntuk mengubah String menjadi int, kita dapat menggunakan kelas %a&a Dnteger yang di dalamnya memiliki fungsi parseDnt(str). Cungsi ini dapat dipanggil dengan*
periode - Dnteger.parseDnt(strperiode);

Sedangkan untuk mengubah String menjadi double, kita menggunakan kelas %a&a Dou,le yang di dalamnya memiliki fungsi parseDou,le(str). Cungsi ini dapat dipanggil dengan*
a&al - Dou,le.parseDou,le(stra&al); ,unga - Dou,le.parseDou,le(str,unga);

Setelah semua &ariabel didapat dan diubah, kita baru bisa untuk memulai perhitungan. "ntuk menghitung bunga bank setelah n tahun, kita bisa menggunakan rumus berikut * akhir I a'al - (5 1 bunga)periode $alam %a&a, rumus tersebut bisa dituliskan dengan ekspresi berikut
a.%ir - a&al 3 ?at%.po&(1 ; ,unga4periode);

Berikut ini adalah listing program lengkap yang dapat diunduh dalam bentuk Nip file atau melalui S83 di alamat http*,,belajarja&a.googlecode.com,s&n,trunk, itung0n&estasi3Periode
package %itungin+estasinperiode; import 2a+a.io.3; public class #itungDn+estasiN>eriode { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub // buat ob#ek baru untuk mengambil input =u88ered*eader ,r - new =u88ered*eader(new DnputStream*eader(System.in)); // tempat di mana input dari user akan diletakkan String nama - null; String stra&al - null; String str,unga - null; String strperiode - null; try { System.out.print("?asu..an nama Hnda C "); nama - ,r.read(ine(); System.out.print("?asu..an 2umla% a&al in+estasi (*p) C "); stra&al - ,r.read(ine(); System.out.print("?asu..an ,unga (mis 1.1 - 11M) C "); str,unga - ,r.read(ine(); System.out.print("?asu..an periode (ta%un) C "); strperiode - ,r.read(ine(); } catch(D)'x/eption ioe) { System.out.println("Aesala%an D) pada saat menanya.an nama Hnda"); } // deklarasi %ariabel tipe bilangan double a&al; double ,unga; int periode; System.exit(1);

double a.%ir; // mengubah input dari Sting ke tipe data bilangan periode - Dnteger.parseDnt(strperiode); a&al - Dou,le.parseDou,le(stra&al); ,unga - Dou,le.parseDou,le(str,unga); // menghitung hasil in%estasi selama n periode a.%ir - a&al 3 ?at%.po&(1;,unga4 periode); // tampilkan hasil perhitungan di la,ar System.out.println(); System.out.println("@erima .asi%4 " ; nama); System.out.print("#asil in+estasi Hnda setela% " ; periode ; " ta%un "); } } System.out.println("adala% *p. " ; a.%ir);

Berikut ini adalah hasil keluarannya *

Anda mungkin juga menyukai