PENDAHULUAN
String merupakan sekumpulan karakter yang membentuk kata atau
kalimat. Dalam bahasa pemrograman, String merupakan salah datu tipe data yang paling sering digunakan. Dalam kasus tertentu, terkadang kita ingin memformat suatu String menjadi String yang diinginkan, atau kita menggabungkan suatu String dengan String lainnya, atau kita ingin mengetahui jumlah karakter dari suatu String, atau kita ingin mengetahui apakah dalam suatu
String mengandung karakter tertentu, dan lain sebagainya.
Java mengenal String bukan dalam bentuk array karakter, tetapi dalam bentuk suatu objek dengan tipe data class
String.
Dengan
mengimplementasikannya sebagai objek, memungkinkan Java untuk menyediakan berbagai macam fasilitas penanganan String yang lebih mudah digunakan seperti membandingkan dua buah String, konkatenasi dua buah String, mengambil karakter yang menyusun String tersebut, dan sebagainya. Pada bab ini akan membahas tentang class String, operasi khusus String yang didukung oleh Java, membandingkan isi dua buah objek String, membandingkan awal dan akhir suatu String, mencari posisi suatu String dalam
String lainnya, menghapus karakter spasi (whitespace) di awal dan akhir String,
mengubah huruf besar dan kecil dari karakter dalam suatu String, parsing, dan formating.
102
103
Kriteria Penilaian Keberhasilan Anda dalam menguasai bab ini diukur berdasarkan kriteria kemampuan sebagai berikut : 1. Menjelaskan perbedaan String dan Karakter 2. Membandingkan isi dua buah objek String 3. Membandingkan awal dan akhir suatu String 4. Dapat menerapkan mekanisme pasring dan formating dalam program Java
Sumber Pustaka 1. Abdul Kadir, 2005, Dasar Pemrograman Java 2, Andi, Yogyakarta. 2. Herbert Schildt, 2005, Java : A Beginners Guide, Third Edition, McGrawHill/Osborne, United States of America. 3. Herbert Schildt, Patrick Naughton , 1999, Java 2 : The Complete Reference, Fourth Edition, McGraw-Hill/Osborne, United States of America. 4. Indrajani, S.Kom., MM., Martin, S.Kom., 2007, Pemrograman Berorientasi Objek dengan Bahasa Java, PT. Elex Media Komputindo, Jakarta.
104
9.1.
Class String
Class String berfungsi untuk menciptakan objek String yang bersifat
immutable, yang berarti bahwa jika kita telah membuat objek String, maka
String yang ada di dalamnya tidak akan dapat diubah lagi. Namun demikian,
referensi dari variabel yang memegang objek String tersebut tetap dapat diubah. Oleh karena itu, kita tetap dapat menuliskan kode program seperti berikut ini :
String kalimat = Hello Java; kalimat = Hello World;
Kode di atas tidak berarti alokasi memori yang digunakan adalah sama, melainkan akan terjadi dua kali alokasi memori untuk masing-masing objek
String, inilah yang dikatakan bersifat immutable. Sehingga, jika terlalu banyak
melakukan manipulasi terhadap objek String, maka akan menyebabkan banyaknya alokasi memori untuk objek String yang sebenarnya tidak digunakan lagi. Walaupun Java memiliki fasilitas gerbage collection untuk membersihkan memori yang sudah tidak digunakan lagi, performa dari sistem tetap saja menurun. Hal ini dikarenakan banyaknya waktu yang dibutuhkan oleh gerbage collection utnuk membersihkan semua memori yang tidak lagi digunakan. Jika kita perlu melakukan manipulasi String dari suatu objek String tanpa harus membuat objek String yang baru, kita dapat menggunakan class
StringBuffer. Dengan objek dari class ini, kita dapat melakukan manipulasi String yang ada di dalamnya tanpa membuat objek yang baru.
9.1.1. Operasi Khusus String yang didukung Java Oleh karena penggunaan String dalam suatu program sangat sering dan penting, maka secara khusus Java mendukung beberapa operasi String dalam sintaks bahasa Java itu sendiri. Sehingga penggunaan String lebih leluasa dan mudah. Harus diingat bahwa kemudahan ini hanya berlaku untuk penggunaan class String yang ada pada package java.lang dan tidak berlaku untuk classclass lainnya.
105
Karena itu dalam program, kita dapat langsung membuat objek String tanpa perlu secara eksplisit menggunakan keyword new, seperti berikut ini :
String str = Hello Java;
Secara otomatis, Java akan mengkonversi nilai literal String tersebut menjadi objek String. Bahkan kita dapat langsung mengakses member dari objek
String tersebut melalui nilai literalnya, seperti berikut ini : int length = Hello Java.length();
method length() merupakan member dari class String yang dapat digunakan untuk mendapatkan panjang String. Berikut ini adalah contoh penggunaan di dalam program :
Langkah 1 : Jalankan Notepad Ketiklah kode program di bawah ini pada text editor notepad :
class PanjangString { public static void main(String args[]) { String str = "Hello Java"; System.out.println("Panjang string = "+str.length()); } }
Langkah 2 : Simpan Program Java Simpanlah kode program di atas dengan nama PanjangString.java pada direktori C:\PBO\.
Langkah 3 : Lakukan Kompilasi dan Jalankan Program Lakukan kompilasi dan jalankan program di atas seperti pada gambar berikut ini :
106
9.1.1.1.
Java mendukung penggunaan operator + untuk melakukan konkatenasi terhadap dua buah objek String. Kita bahkan juga dapat melakukan konkatenasi secara berurutan terhadap lebih dari dua buah objek String. Contoh :
Langkah 1 : Jalankan Notepad Ketiklah kode program berikut ini pada text editor notepad :
class Konkatenasi { public static void main(String args[]) { String str; str = "Hello "+"Java"; System.out.println(str); str = "Hello "+"Java ,"+"I Love You"; System.out.println(str); } }
Langkah 2 : Simpan Program Java Simpanlah kode program di atas dengan nama Konkatenasi.java pada direktori C:\PBO\.
Langkah 3 : Lakukan Kompilasi dan Jalankan Program Lakukan kompilasi dan jalankan kode program di atas seperti pada gambar berikut ini :
9.1.1.2.
Kita juga dapat menggunakan operator + untuk melakukan konkatenasi antara objek String dengan tipe data lainnya untuk mendapatkan objek String
107
baru yang berisi hasil konkatenasinya. Untuk tipe data primitf yang berupa numerik, konkatenasi tersebut akan mengubah tipe data numerik menjadi String yang menunjukkan nilai numeriknya, sedangkan untuk tipe data boolean akan mengembalikan nilai String true atau false. Contoh :
Langkah 1 : Jalankan Notepad Ketiklah kode program di bawah ini pada text editor notepad :
class KonkatenasiKonversi { public static void main(String args[]) { String str; boolean check = true; int x = 1; str = "Hello Java, "+"You love me, is that "+check; System.out.println(str); str = x+". Hello World"; System.out.println(str); } }
Langkah 2 : Simpan Program Java Simpanlah kode program di atas dengan nama KonkatenasiKonversi.java pada direktori C:\PBO\.
Langkah 3 : Lakukan Kompilasi dan Jalankan Program Lakukan kompilasi dan jalankan kode program di atas seperti pada gambar berikut ini :
108
Pada saat melakukan konkatenasi antara objek dari class String dengan objek dari class lainnya, secara otomatis Java akan memanggil method
toString() dari objek tersebut, baru kemudian melakukan konkatenasi. Contoh :
Langkah 1 : Jalankan Notepad Ketiklah kode program di bawah ini pada text editor notepad :
class TestMe { public String toString() { return "It's me..."; } } class ToString { public static void main(String args[]) { TestMe tm = new TestMe(); System.out.println("String yang dicetak : "+tm); } }
Langkah 2 : Simpan Program Java Simpanlah kode program di atas dengan nama ToString.java pada direktori C:\PBO\.
Langkah 3 : Lakukan Kompilasi dan Jalankan Program Lakukan kompilasi dan jalankan kode program di atas seperti pada gambar berikut ini :
109
Class TestMe di atas melakukan override terhadap method toString() yang diperoleh dari class Object. Sehingga hasil eksekusinya seperti pada gambar 9.4 di atas.
9.1.2. Membandingkan Isi Dua Buah Objek String Untuk membandingkan isi dari dua buah objek String, class String menyediakan method equals(Object anObject) untuk memandingkan dua buah objek String dengan memperhitungkan huruf besar atau kecil (case sensitif) dan equalsIgnoreCase(Object anotherString) untuk membandingkan dua buah objek String tanpa memperhitungkan huruf besar atau kecil. Dari kedua method ini, akan menghasilkan nilai true jika dua buah objek String yang dibanding bernilai sama dan akan menghasilkan nilai false jika dua buah objek String yang dibandingkan tidak sama. Contoh :
Langkah 1 : Jalankan Notepad Ketiklah kode program di bawah ini pada text editor notepad :
class Equals { public static void main(String args[]) { String str1 = "Java"; String str2 = "Java"; String str3 = "java"; System.out.println("Membandingkan menggunakan equals()"); System.out.println("Apakah nilai variabel str1 "+ "sama dengan str2? "+str1.equals(str2)); System.out.println("Apakah nilai variabel str1 "+ "sama dengan str3? "+str1.equals(str3)); System.out.println("Membandingkan menggunakan "+ "equalsIgnoreCase()"); System.out.println("Apakah nilai variabel str1 "+ "sama dengan str3? "+str1.equalsIgnoreCase(str3)); } }
Langkah 2 : Simpan Program Java Simpanlah kode program di atas dengan nama Equals.java pada direktori C:\PBO\.
110
Langkah 3 : Lakukan Kompilasi dan Jalankan Program Lakukan kompilasi dan jalankan program di atas seperti pada gambar berikut ini :
9.1.3. Membandingkan Awal dan Akhir Suatu String Untuk mengecek apakah suatu String dimulai atau diakhiri oleh suatu String tertentu, class String menyediakan method :
boolean startsWith(String prefix) boolean startsWith(String prefix, int toffset) boolean endsWith(String suffix).
Parameter
prefix
dan
suffix
merupakan
String
yang
ingin
dicari/dicocokkan, sedangkan parameter toffset merupakan indeks yang akan digunakan sebagai posisi awal pencarian String. Contoh :
Langkah 1 : Jalankan Notepad Ketiklah kode program di bawah ini pada text editor notepad :
class AwalAkhir { public static void main(String args[]) { String str = "Hello World"; System.out.println(str.startsWith("Hello")); System.out.println(str.startsWith("ello",1)); System.out.println(str.endsWith("World")); } }
111
Langkah 2 : Simpan Program Java Simpanlah kode program di atas dengan nama AwalAkhir.java pada direktori C:\PBO\.
Langkah 3 : Lakukan Kompilasi dan Jalankan Program Lakukan kompilasi dan jalankan program di atas seperti pada gambar berikut ini :
9.1.4. Mencari Posisi Suatu String dalam String Lainnya Class String menyediakan method-method yang dapat digunakan untuk mengetahui posisi suatu String di dalam String lainnya. Method-method tersebut adalah :
int indexOf(int ch) int indexOf(int ch, int fromIndex) int indexOf(String str) int indexOf(String str, int fromIndex) int lastIndexOf(int ch) int lastIndexOf(int ch, int fromIndex) int lastIndexOf(String str) int lastIndexOf(String str, int fromIndex)
method indexOf() digunakan untuk mencari posisi kemunculan pertama kali dari String ataupun karakter yang dicari dalam String lainnya, sedangkan method lastIndexOf() digunakan untuk mencari posisi kemunculan terakhir dari
String ataupun karakter yang dicari. Parameter fromIndex digunakan untuk
112
Langkah 1 : Jalankan Notepad Ketiklah kode program di bawah ini pada text editor notepad :
class PosisiString { public static void main(String args[]) { String str = "Hello Java Hello Java Hello Java"; System.out.println("Kata Java ada di indeks ke-"+ str.indexOf("Java")); System.out.println("Kata Java ada di indeks ke-"+ str.indexOf("Java",10)); System.out.println("Kata Love ada di indeks ke-"+ str.lastIndexOf("Hello")); System.out.println("Kata Love ada di indeks ke-"+ str.lastIndexOf("Hello",10)); } }
Langkah 2 : Simpan Program Java Simpanlah kode program di atas dengan nama PosisiString.java pada direktori C:\PBO\.
Langkah 3 : Lakukan Kompilasi dan Jalankan Program Lakukan kompilasi dan jalankan program di atas seperti pada gambar berikut ini :
113
9.1.5. Menghapus Karakter Whitespace di Awal dan Akhir Suatu String Java menyediakan suatu method yang dapat digunakan untuk menghapus karakter whitespace di awal dan akhir suatu String, yaitu :
String trim()
Langkah 1 : Jalankan Notepad Ketiklah kode program di bawah ini pada text editor notepad :
class Trim { public static void main(String args[]) { String str = " Hello Java "; System.out.println("String sebelum ditrim"); System.out.println(str); System.out.println("String sesudah ditrim"); System.out.println(str.trim()); } }
Program di atas akan menghapus karakter whitespace yang ada di awal dan akhir
String Hello Java, namun tidak akan menghapus karakter whitespace yang
Langkah 2 : Simpan Program Java Simpanlah kode program di atas dengan nama Trim.java pada direktori C:\PBO\.
Langkah 3 : Lakukan Kompilasi dan Jalankan Program Lakukan kompilasi dan jalankan program di atas seperti pada gambar berikut ini :
114
9.1.6. Mengubah Huruf Besar dan Kecil dari Karakter dalam Suatu String Pada kasus tertentu, kita ingin mengubah huruf besar/kecil dari suatu String. Oleh karena itu, Java menyediakan method
String toLowerCase() String toUpperCase()
Method toLowerCase() digunakan untuk menghasilkan objek String baru, yang mana semua karakter di dalam objek String sebelumnya sudah diubah ke huruf kecil semua. Sedangkan method toUpperCase() digunakan untuk
menghasilkan objek String baru, yang mana semua karakter di dalam objek String sebelumnya sudah diubah ke huruf besar semua. Contoh :
Langkah 1 : Jalankan Notepad Ketiklah kode program di bawah ini pada text editor notepad :
class LowerUpper { public static void main(String args[]) { String str = "Hello World"; System.out.println("String sebelum diubah"); System.out.println(str); System.out.println(str.toLowerCase()); System.out.println(str.toUpperCase()); } }
Langkah 2 : Simpan Program Java Simpanlah kode program di atas dengan nama LowerUpper.java pada direktori C:\PBO\. Langkah 3 : Lakukan Kompilasi dan Jalankan Program Lakukan kompilasi dan jalankan kode program di atas seperti pada gambar berikuti ini :
115
9.2.
Parsing
Parsing merupakan suatu proses memilah-milah data dari sekumpulan
data. Proses parsing ini akan sering dilakukan dalam operasi String. Perhatikan contoh data mentah berikut ini :
Daniel Ang:0236450189:124,Budi Setiawan:0365472569:60000,David:032 5478951::450000,Kurniawan:3201546987:983400,Martin:0564231897:1236 5
Pada contoh data mentah di atas sebenarnya tersimpan sekumpulan data yang terdiri atas nama, no rekening, dan saldo. Untuk melakukan parsing terhadap data di atas, class String telah menyediakan method : String[] split(String regex) String[] split(String regex, int limit) Parameter regex berupa regular expression. Oleh karena lingkupnya yang terlalu luas, regular expression tidak akan dibahas secara mendetail. Hanya contoh-contoh sederhana dari regular expression ini yang akan digunakan. Parameter limit berguna untuk membatasi hasil parsing. Berikut ini contoh parsing dalam program berdasarkan contoh di atas :
Langkah 1 : Jalankan Notepad Ketiklah kode program di bawah ini pada text editor notepad :
public class Parsing { public static void main(String args[]) { String input = "Daniel Ang:0236450189:124,Budi Setiawan"+ ":0365472569:60000,David:0325478951::450"+ "000,Kurniawan:3201546987:983400,Martin:"+ "0564231897:12365"; System.out.println("Input : "); System.out.println(input); System.out.println(); System.out.println("Hasil proses : "); String[] records = input.split("[,]"); for(String record : records) { String[] fields = record.split("[:]"); String nama = fields[0]; String noRek = fields[1]; String saldo = fields[2]; System.out.println(nama + " - #Rekening " + noRek + " - Saldo : " + saldo); } }}
116
Langkah 2 : Simpan Program Java Simpanlah kode program di atas dengan nama Parsing.java pada direktori C:\PBO\.
Langkah 3 : Lakukan Kompilasi dan Jalankan Program Lakukan kompilasi dan jalankan program di atas seperti pada gambar berikut ini :
9.3.
Formating
Terkadang dalam operasi String diperlukan proses formating agar String
yang akan ditampilkan mudah dibaca atau hanya sekadar membuat tampilan menjadi menarik. Untuk kebutuhan ini, pada class String, mulai java versi 1.5 telah ditambahkan method :
static String format(Locale l, String format, Object... args) static String format(String format, Object... args)
Parameter l untuk menentukan format standar locale yang akan digunakan. Misalnya jika digunakan java,util.Locale.US maka format penulisan angka akan menggunakan . (titik) sebagai pemisah desimal dan , (koma) sebagai pemisah ribuan. Parameter format digunakan untuk menentukan format dari String yang akan dihasilkan, berikut ini format penulisannya :
%[arg_index$][flags][width][.precision](conv char)
117
2. args_index$, menunjukkan argumen ke berapa yang akan diformat, ditulis dengan angka dan $. 3. flags, berisi petunjuk pemformatan. Beberapa flags yang sering digunakan adalah : a. -, untuk membuat tampilan menjadi rata kiri (untuk angka secara default adalah rata kanan). b. 0, untuk melakukan padding dengan angka 0. c. ,, agar tampilan untuk angka dikelompokkan berdasarkan ketentuan sesuai dengan local-nya. misalnya untuk US ribuan akan dipisahkan menggunakan tanda , (koma). d. (, jika angka yang hendak ditampilkan bernilai negatif, maka akan ditulis di dalam kurung tanda (). 4. width, menentukan panjang String yang akan dihasilkan. 5. precession, menentukan berapa banyak angka desimal yang akan ditampilkan. 6. conv char, menentukan tipe data yang akan diformat, beberapa yang sering digunakan adalah : a. b, untuk boolean b. c, untuk char c. d, untuk integer d. f, untuk floating point e. s, untuk string f. t, untuk date dan calender
9.3.1. Memformat Angka Untuk memformat angka, digunakan karakter konversi d atau f. Berikut ini contoh penggunaan dalam program :
Langkah 1 : Jalankan Notepad Ketiklah kode program di bawah ini pada text editor notepad :
public class FormatAngka {
118
public static void main(String args[]) { int numerik = -1234; double pecahan = 1234.5678; System.out.println(String.format("[%1$(10d]\n[%2$10.2f]", numerik,pecahan)); System.out.println(String.format("[%1$-10d]\n[%2$,12.4f]", numerik,pecahan)); } }
Langkah 2 : Simpan Program Java Simpanlah kode program di atas dengan nama FormatAngka.java pada direktori C:\PBO\.
Langkah 3 : Lakukan Kompilasi dan Jalankan Program Lakukan kompilasi dan jalankan kode program di atas seperti pada gambar berikut ini :
9.3.2. Memformat Tanggal Untuk memformat tanggal digunakan karakter konversi t diikuti dengan beberapa tambahan seperti berikut ini : 1. H jam dengan format 2 angka : 00 23 2. I jam dengan format 2 angka : 01 12 3. M menit dalam 1 jam : 00 59 4. S detik dalam menit : 00 60 (60 adalah nilai spesial yang digunakan untuk mendukung leap seconds) 5. B nama bulan dalam bahasa lokal, contoh January, February
119
6. m bulan dengan format 2 angka : 01 13 (13 hanya digunakan untuk penanggalan yang mengenal 13 bulan seperti penanggalan Arab) 7. d hari dalam 1 bulan dalam format 2 angka 01 31 8. Y - tahun dalam format 4 angka 9. F format tanggal berdasarkan ISO 8601 yang dapat juga ditulis menggunakan format %tY-%tm-%td 10. T format 24 jam yang dapat juga ditulis menggunakan format %tH:%tM:%tS Berikut ini contoh penggunaan dalam program :
Langkah 1 : Jalankan Notepad Ketiklah kode program di bawah ini pada text editor notepad :
import java.util.Date; public class DemoFormattingDate { public static void main(String[] args) { Date tanggal = new Date(); //tanggal hari ini System.out.println(String.format( %1$td-%1$tB-%1$tY %1$tH:%1$tM:%1$tS,tanggal)); System.out.println(String.format( $1$tF %1$tT,tanggal)); } }
Langkah 2 : Simpan Program Java Simpanlah kode program di atas dengan nama
Langkah 3 : Lakukan Kompilasi dan Jalankan Program Lakukan kompilasi dan jalankan kode program di atas seperti pada gambar berikut ini :
120
Sebenarnya masih banyak bentuk format yang dapat digunakan. Untuk penjelasan lebih lengkap, dapat dibaca dalam javadoc untuk class java.util.Formatter.
Rangkuman
1. String merupakan sekumpulan karakter yang membentuk kata atau kalimat. 2. Java mengenal String dalam bentuk sebuah class yang dapat dijadikan tipe data referensi. 3. Parsing merupakan suatu proses memilah-milah data dari sekumpulan data. 4. Formatting merupakan suatu proses untuk mengubah tampilan String sehingga lebih mudah dibaca. Proses formatting didukung oleh java dimulai pada versi 1.5.
Soal-soal Latihan
1. Apa yang dimaksud dengan konkatenasi String secara otomatis? Jelaskan dan berikan contoh dalam bentuk program Java! 2. Sebutkan perbedaan antara == dengan method equals()? 3. Bagaimana memformat angka? Jelaskan secara singkat dan berikan contoh dalam bentuk program Java!