Bagian sebelumnya memperkenalkan 8 jenis tipe data primitif dan tipe data
String
. Perbedaan mendasar
antara tipe primitif dan String
adalah : nilai dari tipe String
berupa objek. Objek akan dibahas pada bagian lain mengenai kelas (class). Di
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. Dalam bahasa Java, setiap subrutin termasuk di dalam
bagian suatu kelas atau objek. Java menyediakan kelas standar yang siap
digunakan. Nilai tipe String adalah objek yang memiliki kumpulan subrutin yang
dapat digunakan untuk memanipulasi String tersetbut. Kita 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.
Kelas terdiri dari variabel dan subrutin yang disimpan di dalamnya. Variabel
dan subrutin ini disebut static member (anggota
statis). Contohnya 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()
.
Fungsi kelas yang lain adalah untuk mendeskripsikan suatu objek. Kelas di
sini berfungsi seperti tipe data. Nilai yang disimpan dalam tipe data itu
adalah objek. Misalnya
String
sebenarnya merupakan nama kelas yang disediakan bahasa Java. String
juga berupa tipe data
dan kalimat seperti "Selamat Datang!" adalah isi dari tipe data String
.
Kegunaan kelas baik sebagai gabungan subrutin ataupun sebagai objek sering
membingungkan. Misalnya kelas
String
juga menyimpan beberapa subrutin statik selain juga sebagai tipe data. Contoh
kelas standar lainnya adalah Math
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 datang!System
merupakan salah satu kelas standar Java. Salah satu anggotanya bernama out
. Karena variable ini berada di dalam
kelas System
,
kita harus memanggilnya dengan nama lengkapnya yaitu System
.out
.
Variabel 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
.
(Untuk melihat dari sisi lain, sebetulnya
System
.out
merupakan objek dari kelas PrintStream
. PrintStream
adalah salah
satu kelas standar Java. Objek dengan tipe PrintStream
adalah objek tempat informasi bisa
dicetak. Setiap objek yang bertipe PrintStream
memiliki subrutin bernama print
yang bertugas untuk mencetak
sesuatu ke medium tersebut. Dalam hal ini System
.out
adalah tujuan tempat print
dilakukan. Objek lain yang bertipe
PrintStream
bisa mengirim informasi ke tujuan lain, misalnya file atau network atau ke
komputer lain.
Ini adalah esensi dari pemrograman berorientasi objek, di mana beberapa hal
yang memiliki kesamaan - dalam hal
PrintStream
sama-sama sebagai tempat tujuan print
- dapat digunakan dengan cara yang
sama, yaitu memanggil subrutin print
.)
Karena nama variabel, nama kelas, dan nama subrutin berbentuk hampir sama,
ada baiknya untuk membedakannya sehingga di kemudian hari program dapat dibaca
dengan jelas. Kelas standar Java menggunakan nama yang selalu dimulai dengan
huruf besar, sedangkan nama variabel dimulai dengan huruf kecil. Ini bukan
sintaks Java, tetapi lebih seperti konvensi. Setiap orang bebas menggunakan
konvensinya masing-masing, tetapi apabila pemrograman dilakukan secara
bersama-sama, seperti pada open source programming, konvensi yang sama akan
sangat memudahkan orang lain membaca dan menguji program yang kita buat. Nama
subrutin juga dimulai dengan huruf kecil, sama dengan nama variabel. Tetapi
subrutin harus diikuti dengan tanda buka kurung sehingga masih mudah dibedakan
dengan nama variabel.
Kelas sebagai kumpulan subrutin dan
variabel 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(0) atau System.exit(1), untuk
memberitahu kepada sistem operasi alasan kenapa program dihentikan. Status 0
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). Fungsi adalah subrutin yang
mengembalikan (return) suatu nilai. Nilai yang
dikembalikan akan digunakan lebih lanjut dalam program.
Sebagai contoh adalah fungsi untuk
menghitung akar kuadrat dari suatu bilangan. Java memiliki fungsi seperti itu
yang disebut Math.sqrt. Fungsi ini merupakan anggota statik dari kelas yang
bernama Math. Jika x adalah suatu bilangan, makan Math.sqrt(x) menghitung akar kuadrat dari x dan mengembalikan hasil
perhitungannya. Karena Math.sqrt(x)
mengembalikan suatu bilangan, kita tidak bisa memanggil fungsi ini seperti
Math.sqrt(x); // Tidak masuk
akal!
Kita tentunya ingin menggunakan
hasilnya untuk instruksi selanjutnya, misalnya menuliskan hasilnya di layar
seperti
System.out.print( Math.sqrt(x) ); // Menampilkan
akar kuadrat x di layar.
atau menyimpan hasilnya pada
variabel lain, seperti
panjangDiagonal
= Math.sqrt(x);
Kelas Math
memiliki banyak fungsi statik. Beberapa yang penting di antaranya:
- Math.abs(x), menghitung nilai mutlak (absolut) dari x. Nilai mutlak bilangan negatif adalah bilangan positif, dan bilangan positif tetap bilangan positif.
- Fungsi trigonometri Math.sin(x), Math.cos(x), and Math.tan(x). (Untuk semua fungsi trigonometri, sudut memiliki satuan radian, bukan derajat)
- Fungsi trigonometri inverse, yang mencari sudut dari suatu nilai trigonometric, kebalikan dari fungsi trigonometri, seperti arcus sin, arcus cos, dan arcus tangen. Math.asin(x), Math.acos(x), and Math.atan(x).
- Math.exp(x), menghitung pangkat dari bilangan natural e, atau ex. Dan logaritma natural loge x atau ln x bisa dihitung dengan menggunakan fungsi Math.log(x).
- Math.pow(x,y) menghitung xy atau x pangkat y
- Math.floor(x) menghitung pembulatan ke bawah dari suatu bilangan riil, misalnya 3.84 akan dibulatkan ke bawah menjadi 3.0
- Math.random() memilih bilangan acak di antara 0.0 dan 1.0. Komputer 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(x) yang tipe keluarannya
sama dengan tipe parameternya.
Math.random() tidak memiliki
parameter, tetapi tanda kurungnya harus tetap ditulis untuk membedakan fungsi
dan variabel. Contoh fungsi lain yang tidak memiliki parameter adalah System.currentTimeMillis() yang
berguna untuk mengambil waktu saat ini dalam satuan milidetik, dihitung sejak 1
Januri 1970 waktu GMT. Satu milidetik sama dengan 1 per 1000 detik. Keluarannya
bertipe long.
Untuk menghitung waktu yang diperlukan
untuk menjalankan suatu perintah, jalankan fungsi System.currentTimeMillis() sebelum
dan sesudah suatu instruksi dijalankan. Perbedaannya adalah waktu yang
diperlukan untuk menjalankan suatu instruksi.
Berikut ini adalah listing program untuk melakukan beberapa
perhitungan matematika, menampilkan hasilnya di layar, dan melaporkan waktu
yang diperlukan untuk melakukan perhitungan tersebut.
package waktukomputasi;
public class WaktuKomputasi {
/**
* 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 waktuMulai;
long waktuSelesai;
waktuMulai = System.currentTimeMillis();
double panjang, lebar, sisiMiring; // sisi segitiga siku-siku
panjang = 18.0;
lebar = 27;
sisiMiring = Math.sqrt(panjang*panjang + lebar*lebar);
System.out.print("Segitiga siku-siku dengan panjang 18 dan lebar 27 memiliki sisi miring ");
System.out.println(sisiMiring);
System.out.println("\nSecara matematis, sin(x)*sin(x) + "
+ "cos(x)*cos(x) - 1 = 0");
System.out.println("Mari kita cek untuk x = 1 :");
System.out.print("sin(1)*sin(1) + cos(1)*cos(1) - 1 = ");
System.out.println( Math.sin(1)*Math.sin(1)
+ Math.cos(1)*Math.cos(1) - 1 );
System.out.println("(Mungkin akan ada kesalahan desimal dalam "
+ "perhitungan bilangan real!)");
System.out.print("\nIni adalah bilangan acak : ");
System.out.println(Math.random());
waktuSelesai = System.currentTimeMillis();
System.out.print("\nTotal waktu perhitungan : ");
System.out.print((waktuSelesai - waktuMulai)/1000.0);
System.out.println(" detik");
}
}
Kelas String
Nilai suatu String adalah objek. Objek ini berisi rangkaian huruf yang
membentuk string. Objek tersebut juga berisi subrutin. Misalnya length
adalah fungsi yang menghitung panjang suatu string, atau jumlah karakter dalam
suatu string. Misalnya string str yang dideklarasikan sebagai berikut :
String str;
str
= "Hari ini
cerah sekali!"
Untuk menghitung jumlah karakter
dalam string str, panggil fungsi str.length() yang
keluarannya bertipe int. Fungsi ini tidak membutuhkan
parameter. Fungsi length merupakan anggota kelas String
dan dapat digunakan oleh semua data yang bertipe String.
Dan juga bisa digunakan oleh literal string, misalnya program berikut
menghitung jumlah karakter dalam string "Indonesia Raya" :
System.out.print("Jumlah karakter dalam \"Indonesia Raya\" adalah ");
System.out.print("Indonesia Raya".length());
System.out.println(" karakter");
Kelas String
memiliki beberapa fungsi di antaranya :
- s1.equals(s2) adalah fungsi yang mengembalikan nilai boolean (true atau false). Fungsi ini akan menghasilkan true jika s2 sama dengan s1, dan salah jika tidak. Kesamaan yang diuji adalah kesamaan persis baik kapitalnya maupun urutan huruf-hurufnya.
- s1.equalsIgnoreCase(s2) juga menghasilkan nilai boolean yang menguji apakah string s2 sama dengan s1 dengan tidak membandingkan kapitalnya. "Kucing".equalsIgnoreCase("kucing") menghasilkan true.
- s1.length(). Seperti diulas sebelumnya, fungsi ini menghitung jumlah karakter dalam string s1.
- s1.charAt(N). N adalah integer (bilangan bulat). Fungsi ini mengembalikan karakter ke-N dari string s1. Karakter pertama dihitung sebagai posisi ke-0. s1.charAt(0) berarti mengambil karakter pertama, sedangkan s1.charAt(1) berarti mengambil karakter ke-2, dan seterusnya. Karakter terakhir memiliki indeks s1.length() - 1. Fungsi ini akan mengeluarkan pesan kesalahan apabila N bernilai negatif atau lebih besar dari s1.length() - 1.
- s1.substring(N,M), di mana N dan M bilangan bulat. Fungsi ini mengambil potongan string antara karakter ke-N hingga karakter M-1. Catatan bahwa karakter ke-M tidak ikut diambil. Misalnya, "jalan layang".substring(1,4) menghasilkan "ala".
- s1.indexOf(s2) mengembalikan nilai integer. Fungsi ini mencari string s2 di dalam string s1, dan apabila ditemukan mengembalikan posisi awal s2 di dalam s1. Jika tidak ditemukan, fungsi ini akan mengembalikan -1. Fungsi ini bisa juga digunakan untuk mencari string s2 dalam s1 setelah posisi ke-N dalam string s1. Misalnya, "kelapa muda".indexOf("a") menghasilkan 3, sedangkan "kelapa muda".indexOf("a",6) menghasilkan 10.
- s1.compareTo(s2) membandingkan s2 dan s1. Jika s1 dan s2 sama, hasilnya 0. Jika s1 kurang dari s2, hasilnya bilangan negatif , dan jika s1 lebih besar dari s2, hasilnya bilangan positif. "Kurang dari" atau "lebih dari" mengacu pada urutannya dalam abjad jika keduanya huruf kecil atau keduanya huruf besar. Jika kapitalnya berbeda, perbandingannya bergantung pada nilai ASCII-nya.
- s1.toUpperCase() adalah fungsi untuk mengubah seluruh huruf dalam s1 menjadi huruf besar.
- s1.toLowerCase() berfungsi untuk mengubah huruf dalam s1 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 bu ".trim() menghasilkan "selamat pagi bu".
Untuk s1.toUpperCase(), s1.toLowerCase(), s1.trim() nilai s1
tidak berubah. Fungsi ini melakukan perhitungan kemudian mengembalikan string
baru hasil perhitungan tersebut.
Kita bisa juga menggunakan tanda +
menyambung 2 string. Misalnya "mata" + "hari" menjadi
"matahari". Nilai yang dapat disambungkan bukan hanya string dan
string, tetapi juga string dan angka, misalnya "jalan" + 2 menjadi
"jalan2".
Berikut ini adalah listing program untuk melakukan beberapa
contoh menggunakan kelas
String
,
menampilkan hasilnya di layar, dan melaporkan waktu yang diperlukan untuk
melakukan perhitungan tersebut.package contohstring;
public class ContohString {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
// demo String.length() dan operator + untuk menghubungkan karakter
String str;
str = "Hari ini cerah sekali!";
System.out.println("Panjang string \"" + str + "\" adalah " + str.length());
System.out.print("Jumlah karakter dalam \"Indonesia Raya\" adalah ");
System.out.print("Indonesia Raya".length());
System.out.println(" karakter");
// demo equals dan compareTo
System.out.println("\"jambu\" = \"Jambu\"? " + "jambu".equals("Jambu"));
System.out.println("ignore case \"jambu\" = \"Jambu\"? " + "jambu".equalsIgnoreCase("Jambu"));
}
}
Sumber : http://java.lyracc.com/belajar/java-untuk-pemula/string-objek-dan-subrutin
0 komentar:
Posting Komentar