Pemrograman Lanjut Class String
PTIIK - 2013
Objectives Mampu memahami dan mengimplementasikan tentang Class String Class String Buffer Class String Builder
2
Class String Di dalam java, String adalah object Object String dapat dibuat dengan salah satu dari 2 cara, yaitu : Penulisan sesuatu di dalam tanda antara petik ganda (literal String). String s = ”Halo”; Pembuatan object String dengan keyword new. String s = new String(“Halo”);
Kelas java.lang.String bermodifier final, sehingga tidak dapat diturunkan
3
String dan Memory Dalam java, dikenal 2 buah jenis memory, yaitu: Stack (tempat local variable dan tumpukan method) Heap (tempat instance variable dan object)
Di dalam heap terdapat bagian memory yang disebut dengan String constant pool
4
String dan Memory object String dengan penulisan sesuatu di antara tanda petik ganda (literal String) berada di dalam String constant pool Contoh : String s = ”Halo”; object String dengan keyword new berada di dalam heap (tetapi diluar String constant pool) Contoh : String s = new String(”Halo”);
5
String dengan keyword new Khusus untuk pembuatan object String dengan keyword new (String s = new String(“Halo”) ), sebenarnya terdiri dari 3 buah proses, yaitu Pembuatan object String “Halo” di dalam String constant pool. Hal ini karena “Halo” adalah literal String yang otomatis membuat object di String constant pool. Pembuatan object String “Halo” di dalam heap (non pool). Penghapusan object String “Halo” di dalam String constant pool (bila tidak ada yang mereferensi String) ini. 6
Pada saat java menjumpai literal String (dalam kode program), maka java akan mencari String yang sama dengan literal String tersebut di dalam String constant pool. Bila ternyata di dalam pool ditemukan object String yang sama, maka reference akan menunjuk pada object String di dalam pool tersebut. Bila ternyata java tidak menemukan di dalam String constant pool, maka java akan membuat object String di dalam String constant pool terlebih dahulu
7
Contoh String constant pool
8
Object String adalah Immutable Object String adalah immutable (tidak dapat diubah) Sekali sebuah object String berisi suatu nilai, maka nilai tersebut tidak dapat diubah (tidak peduli apakah object String tersebut berada pada heap ataupun String constant pool). Dalam praktek pemrograman, kita merasa bahwa object String dapat berubah, hal ini karena yang berubah adalah nilai reference penunjuk object String
9
10
Statement s1 = s1 + ”def”; seakanakan menyatakan bahwa object String dapat diubah, akan tetapi sebenarnya statement tersebut hanya membuat object String baru “abcdef” dan kemudian mengubah nilai reference s1 untuk menunjuk object String baru tersebut. Sebenarnya, statement s1 = s1 + ”def”; di atas melibatkan 3 buah object String, yaitu : “abc” (object String awal yang ditunjuk oleh s1), “def” (object String baru), dan “abcdef” (object String baru).
Method-Method Penting Class String
public int length() public boolean equals(String s) public boolean equalsIgnoreCase(String s) public char charAt(int index) public String concat(String s) public String replace(char oldChar, char newChar) public String substring(int begin) public String substring(int begin, int end) public String toLowerCase() public String toUpperCase() public String trim() public String toString()
11
public int length() Method ini mengembalikan panjang dari suatu object String int i = "abcde".length(); System.out.println("i = " + i);
12
//mencetak i = 5
public boolean equals(String s) Membandingkan suatu object String dengan object String s. Mengembalikan nilai true bila object String s adalah bukan null dan s memiliki urutan karakter yang sama dengan object String tempat method equals dipanggil. boolean b = "abcd".equals("abcd"); System.out.println("b = " + b); // mencetak b = true
13
public boolean equalsIgnoreCase(String s) Sama seperti method public boolean equals(String s), hanya saja pada method ini tidak memperhatikan huruf besar atau kecil boolean b = "abcd". equalsIgnoreCase(" AbcD "); System.out.println("b = " + b); // mencetak b = true
14
public char charAt(int index) Method ini mengembalikan karakter yang terletak pada index ke n dari object String. Index pada String dimulai dari 0 char c = "0123456".charAt(4); System.out.println("c = " + c); // Mencetak c = 4
Bila nilai argumen index lebih besar sama dengan jumlah karakter dari object String tersebut, maka akan dilemparkan Exception yang berupa java.lang.StringIndexOutOfBoundsException
15
public String concat(String s) Method ini mengembalikan suatu object String baru yang isinya merupakan gabungan dari object String s dan object String method concat dipanggil. Nilai dari object String baru adalah nilai object String s diletakkan dibelakang nilai object String method concat dipanggil String s = "halo ".concat("apa ").concat("kabar ?"); System.out.println("s = " + s); //mencetak s = halo apa kabar ?
16
public String concat(String s) Operator + dan += bila dioperasikan pada String akan melakukan hal yang sama dengan method concat ini String s = "halo " + "apa " + "kabar "; System.out.println("s = " + s); //mencetak s = halo apa kabar ?
17
public String replace(char oldChar, char newChar)
Mengembalikan sebuah object String baru dimana semua huruf yang sesuai dengan argumen oldChar pada object String tempat method replace dipanggil diganti dengan huruf pada argumen newChar String s = "ABABABABA".replace("B", "D"); System.out.println("s = " + s); //mencetak s = ADADADADA
18
public String substring(int begin) Method ini mengembalikan sebuah object String baru dimana nilainya adalah huruf ke n sampai dengan huruf terakhir dari object String tempat method substring dipanggil. Nilai n ditentukan oleh argumen begin, nilai n adalah zero-based (huruf pertama String adalah berindex 0) String s = "0123456789".substring(3); System.out.println("s = " + s); //mencetak s = 3456789
19
public String substring(int begin, int end) Method ini sama seperti method public String substring(int begin), hanya saja akhir substring adalah karakter ke end-1 (parameter end adalah zero-based) String s = "0123456789".substring(3, 8); System.out.println("s = " + s); //mencetak s = 34567
20
public String toLowerCase() Method ini mengembalikan sebuah object String baru, dimana nilainya adalah semua huruf dari object String tempat method toLowerCase dipanggil dirubah menjadi huruf kecil semua String s = "AnToN".toLowerCase(); System.out.println("s = " + s); //mencetak s = anton
21
public String toUpperCase() Method ini mengembalikan sebuah object String baru, dimana nilainya adalah semua huruf dari object String tempat method toUpperCase dipanggil dirubah menjadi huruf besar semua String s = "AnToN". toUpperCase(); System.out.println("s = " + s); //mencetak s = ANTON
22
public String trim() Mengembalikan object String baru dimana nilainya adalah object String tempat method trim dipanggil, tapi dengan semua blank-spaces diawal dan diakhir String dihapus String s = " \n\tABC \t\t\n".trim(); System.out.println("s = " + s); //mencetak s = ABC
23
public String toString() Mengembalikan object yang sama dengan object String tempat method toString dipanggil
24
Catatan Kelas String memiliki method length(), sedangkan array memiliki variable length Method concat() , replace() , toLowerCase() , toUpperCase() , substring() , trim() dari kelas String selalu mengembalikan object String hasil manipulasi dan tidak mengubah object String tempat method diubah
25
Class StringBuffer dan StringBuilder Kelas java.lang.String sangat tidak efektif bila kita ingin melakukan banyak modifikasi terhadap suatu string karena sifat dari kelas java.lang.String yang immutable Hal ini menyebabkan banyak modfikasi pada suatu kelas String akan dapat menyebabkan banyaknya object String yang terlibat Kelas java.lang.StringBuffer dan java.lang.StringBuilder mengatasi permasalahan ini (mutable)
26
Class StringBuffer dan StringBuilder Perbedaan utama antara class StringBuffer dan class StringBuilder adalah pada kecepatan, bahwa class StringBuilder lebih cepat dari class StringBuffer Perbedaan lain antara StringBuffer / StringBuilder dengan String adalah object yang berubah saat suatu method dipanggil
27
Method-Method penting class StringBuilder
public StringBuilder append(String s) public StringBuilder delete(int start, int end) public StringBuilder insert(int offset, String s) public StringBuilder reverse() public String toString()
28
public StringBuilder append(String s) Memiliki padanan public synchronized StringBuffer append(String s) Method ini akan menambah object String s pada akhir nilai object StringBuilder Method ini dioverload sehingga dapat menerima argumen boolean, char, float, double, int, long, dan lain-lain
29
public StringBuilder delete(int start, int end)
Memiliki padanan public synchronized StringBuffer delete(int start, int end) Method ini akan menghapus karakter ke start (zero based) sampai dengan ke end-1 (zero based)
30
public StringBuilder insert(int offset, String s)
Memiliki padanan public synchronized StringBuffer insert(int offset, String s) Method ini akan menambah object String s pada karakter ke offset (zero base) dari nilai object StringBuilder
31
public StringBuilder reverse() Memiliki padanan public synchronized StringBuffer reverse() Method ini akan membalik urutan karakter nilai object StringBuilder, karakter terakhir menjadi karakter pertama (dan sebaliknya)
32
public String toString() Mengembalikan nilai string object StringBuilder atau StringBuffer sebagai object String
33
[email protected] 081 331 834 734 / 088 160 127 40