STRING String String Buffer By : Aulia Oktavella P. (2103141015) String Builder String Pengertian String Konstruktor String Penyimpanan & Kekekalan String Method String Concat( ) Pengertian String String merupakan salah satu tipe data yang sangat sering digunakan dalam membuat program. Kali ini kita akan membahas bagaimana cara menggunakan fungsi – fungsi dasar String di Java. String di Java memiliki banyak sekali fungsi-fungsi dasar yang sangat berguna ketika kita ingin melakukan prosessing kata, Dalam pemrograman Java string merupakan aspek penting, karena dapat mempelajari mengenai class dan objek melalui penggunaan string. String sebenarnya merupakan class yang terdapat dalam library Java. Java String merupakan salah satu kelas dasar yang disediakan oleh Java untuk memanipulasi karakter. String Pengertian String Di dalam java, String adalah object. Object String dapat dibuat dengan salah satu dari 2 cara, yaitu : 1. Penulisan sesuatu di dalam tanda antara petik ganda (literal String). Ex : String s = ”Halo”; System.out.println(“Percobaan”); 2. Pembuatan object String dengan keyword new. Ex : String s = new String(“Halo”); · Kelas java.lang.String bermodifier final, sehingga tidak dapat diturunkan [1]. String Pengertian String STRING DAN MEMORY Dalam java, dikenal 2 buah jenis memory, yaitu [1]: 1. Stack (tempat local variable dan tumpukan method) 000q c Di dalam heap terdapat bagian memory yang disebut dengan String constant pool [2]. Bila kita membuat object String dengan penulisan sesuatu di antara tanda petik ganda (literal String), maka object String tersebut akan berada di dalam String constant pool [1]. Ex : String s = ”Halo”; Sedangkan bila kita membuat String dengan keyword new, maka object String tersebut akan berada di dalam heap (tetapi diluar String constant pool) [1]. Ex : String s = new String(”Halo”); String Konstruktor String Syntax Description Example String(); Inisialisasi dan membuat String(); obyek String yang tidak berisi karakter. Sama dengan String(“”); String(String Value); Inisialisasi dan membuat String(“Hello world.”); obyek String Isikan string nya. String(StringBuffer buffer); Isinya identik dengan serangkaian karakter yang disimpan pada obyek StringBuffer String(new StringBuffer()); String Penyimpanan & Kekekalan String • Java mempunyai media penyimpanan literal string yang yang disebut “pool”. • Jika suatu literal string sudah ada di pool, Java “tidak akan membuat copy lagi”. • obyek String bukanlah string itu sendiri, ia hanya merujuk ke lokasi memori yang berisi karakter string String a = “hello”; String b = “hello”; String c = “hello”; • Untuk menghemat tempat dan mengurangi kompleksitas, walaupun tiga string yang diinisialisasi, compiler Java hanya membuat satu ruang memori untuk menyimpan teks hello. Ruang memori digunakan bersama-sama oleh tiga obyek String, Sedangkan variabel a, b, dan c hanya pointer String yang menunjuk ke lokasi memori tersebut Penyimpanan & Kekekalan String • Perubahan satu string jelas akan mempengaruhi dua string yang lain. Karena itu dengan tidak diijinkannya manipulasi string secara langsung, Lingkungan Java mencegah perubahan satu string berdampak pada string yang lainnya. String a = “hello”; String b = “hi”; String c = a; c = b • Dua lokasi memori untuk menempatkan string. String pertama berisi hello String kedua berisi hi, Variabel String c menunjuk String pertama kemudian menunjuk ke String yang lainnya String Penyimpanan & Kekekalan String public class Test { public static void main(String args[]) { String a = “java”; String b = “java”; String x = “ja”; String y = “va”; String c = x + y; if (a == b){ System.out.println(“a and b are the }else System.out.println(“a and b are not if (b == c){ System.out.println(“a and c are the }else System.out.println(“a and c are not } } same object”); the same object”); same object”); Output source code di atas : a and b are the same object the same object”); a and c are not the same object Ketika source Java dieksekusi, isi variabel String a, b, dan c adalah sama : “java.” Tetapi, a,b,dan c tidak akan menunjuk lokasi memori yang sama, Dan karena itu perbandingan kedua akan gagal. Karena String a dan b didefinisikan saat compile dan isinya sama, maka referensi lokasi memorinya sama. String c dialokasikan saat run time dan akan Disimpan String Method String equals( ) substring( ) equalsIgnoreCase( ) indexOf( ) compareTo( ) lastIndexOf( ) toUpperCase( ) startsWith( ) toLowerCase( ) trim( ) charAt( ) concat( ) replace( ) String Method String equals ( ) public class Equals { public static void main(String[] args) { String a = "hello"; String b = "HELLO"; Method equals () dari kelas String lebih dipilih untuk memeriksa kesamaan string. Method equals () mengembalikan nilai true jika parameter stringnya identik dengan sumber string jika tidak, memberikan nilai false. Kesamaan string adalah casesensitive, sehingga jika ada perbedaan akan dihasilkan false. Parameter null juga akan Memberikan nilai false if(a.equals(b)== true){ System.out.println(a+"dan"+b+"sama"); }else System.out.println(a+"dan"+b+"tidak sama"); } } String Method String equalsIgnoreCase() public class equalsIgnoreCase { public static void main(String[] args) { String a = "hello"; String b = "HELLO"; if(a.equalsIgnoreCase(b)== true){ System.out.println(a +"dan"+b+"sama"); }else System.out.println(a +"dan"+b+"tidaksama"); Method equalsIgnoreCase () untuk menentukan kesamaan string tanpa memperhatikan penulisannya. } Method mengembalikan nilai true jika kedua string sama, meskipun penulisannya berbeda. Jika tidak, methodmengembalikan nilai false. Null argumen juga akan dikembalikan sebagai nilai false } String Method String compareTo() public class compareTo { public static void main (String args[]){ String a ="one"; String b ="two"; String c ="three"; if(a.compareTo(b)<0){ System.out.println("one appears before two"); } Method compareTo() biasanya digunakan untuk penyortiran. Method ini digunakan untuk membandingka dua string dalam konteks alfabet. Jika string yang target lebih akhir } dalam urutan abjad dibanding referansinya, maka method akn mengembalikan negatif, dan sebaliknya. Tapi jika kedua string sama, maka akan mengembalikan 0. if(b.compareTo(c)>0){ System.out.println("three appears before two"); } } String Method String toUpperCase() Method toUpperCase () menghasilkan string yang identik dengan yang string asal, kecuali bahwa setiap karakter huruf kecildiubah menjadi huruf besar. public class toUpperCase { public static void main(String[] args){ String a ="d3"; String b ="Teknik"; String c ="INfoRmatiKa"; System.out.println(a.toUpperCase()); System.out.println(b.toUpperCase()); System.out.println(c.toUpperCase()); } } Jika string asal sudah uppercase, maka string yang dikembalikan sama dengan string asal. String Method String toLowerCase() Method toLowerCase () menghasilkan string yang identik dengan yang string asal, kecuali bahwa setiap karakter huruf besar diubah menjadi huruf kecil. String yang asli tidak berubah, hanya string yang dikembalikan berbeda. Catatan: Jika string asal sudah lowercase, maka string yang dikembalikan sama dengan string asal. public class toLowerCase { public static void main(String[] args){ String a ="D3"; String b ="TEKNik"; String c ="INFORmatiKA"; System.out.println(a.toLowerCase()); System.out.println(b.toLowerCase()); System.out.println(c.toLowerCase()); } } String Method String charAt() Method charAt() ini akan mengembalikan karakter pada indeks yang ditunjuk oleh string. public class charAt { public static void main (String args[]){ String a ="TEKNIK INFORMATIKA"; System.out.println(a.charAt(0)); System.out.println(a.charAt(7)); } } String Method String substring() Method substring()dibagi menjadi dua: substring(int start) akan mengembalikan sebagaian karakter dari string mulai dari indeks ke start sampai akhir. public class substring { public static void main (String args[]){ String a ="TEKNIK INFORMATIKA"; System.out.println(a.substring(6)); System.out.println(a.substring(1,10)); } } substring(int start, int end) akan mengembalikan karakter dari indeks ke start sampai end saja. String Method String indexOf() Method indexOf() digunakan untuk mencari string, mengembalikan posisi pertama yang ditemukan dari string target. indexOf(char ch), indexOf(char ch, int index), indexof(String s), indexOf(String s, int index) public class indexOf { public static void main(String args[]){ String kata ="TEKNIK INFORMATIKA"; System.out.println(kata.indexOf("K")); System.out.println(kata.indexOf("A",14)); System.out.println(kata.indexOf("NIK")); System.out.println(kata.indexOf("NIK")); } } Jika karakter atau string target tidak ditemukan akan mengembalikan nilai -1. Pencarian adalah case sensitive. Method indexOf() juga dioverloaded untuk menerima parameter kedua yang menyatakan di mana posisi awal pencarian. String Method String lastIndexOf() public class lastIndexOf { public static void main (String args[]){ String kata ="TEKNIK INFORMATIKA"; Method indexOf() ini hampir sama dengan indexOf() hanya saja pencarian akan dimulai dengan posisi yang terakhir. Tetapi tidak seperti indexOf(), pencarian lastIndexOf() dimulai di posisi terakhir dari string. Sedangkan pada indexOf() dipanggil dengan parameter kedua untuk mulai mencari pada lokasi yang lain melanjutkan dari kanan ke kiri. System.out.println(kata.lastIndexOf("A")); System.out.println(kata.lastIndexOf("A",5)); System.out.println(kata.lastIndexOf("NIK")); System.out.println(kata.lastIndexOf("FORM",3)); } } String Method String startsWith() Method startsWith() digunakan untuk menguji apakah string diawali dengan spesifik karakter tertentu. Alternatif pemanggilan method memulai pengujian dengan spesifik alamat dan public class Test { public mirip dengan substring(). public class startsWith { public static void main(String[] args){ String s = "knowledge"; if(s.startsWith("know")){ System.out.println(s+" begins with know"); } if(s.startsWith("led",7)){ System.out.println("starting at position 4 it begins led"); }else System.out.println("led not starting at position 4"); } } String Method String trim() Method trim() digunakan untuk membuang spasi, tab, dan form feeds dari awal sampai akhir yang tidak diperlukan. public class trim { public static void main(String[] args){ String s1 = " NRP 2103141015 String s2 = s1.trim(); "; System.out.println(s2); } } String Method String( ) concat() Method concat() untuk menggabungkan string. public class concat { public static void main(String[] arg){ String a = "Teknik "; String b = "Informatika"; System.out.println("Dengan concat = "+a.concat(b)); System.out.println("Dengan a+b = "+a+b); } } String Method String replace() Method 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 [2]. public class replace { public static void main(String[] args){ String s = "Balonku ada lima, rupa-rupa warnanya".replace("a", "i"); System.out.println("s = " + s); } } String String Buffer Pengertian StringBuffer Method StringBuffer Konstruktor StringBuffer Pengertian StringBuffer StringBuffer merupakan class yang digunakan untuk mengubah isi dari suatu string. Alasan digunakan StringBuffer karena string memiliki sifat kekal (immutable string). Dalam StringBuffer juga terdapat beberapa method sepertihalnya String. Berikut akan saya jelaskan beberapa method dalam StringBuffer. Masalah utama dengan class String adalah sifat kekekalannya. Lebih mudah dan efisien jika sebuah string dapat langsung diubah. Java menyediakan alternatif class yaitu StringBuffer, untuk mengatasi masalah ini. StringBuffer adalah string yang dapat dimodifikasi. StringBuffers digunakan secara internal untuk mengimplementasikan method-method yang ada dalam class String. StringBuffer dapat membawa sejumlah karakter pada penciptaannya. Hal ini dikenal sebagai kapasitas. StringBuffer memiliki default kapasitas 16 karakter, tapi biasanya pemrogram mendefinisikan kapasitas pada penciptaan. Misalnya, untuk menciptakan StringBuffer kosong dengan kapasitas 100 karakter sbb : StringBuffer b = new StringBuffer(100); String Buffer Konstruktor StringBuffer Sintak Deskripsi Contoh StringBuffer() Menginisialisasi dan membuat objek StringBuffer kosong dengan kapasitas default 16 karakter. Sama seperti jika kita membuat dengan sintak StringBuffer(16) StringBuffer(); StringBuffer (int capacity) Menginisialisasi dan membuat Objek StringBuffer dengan kapasitas yang ditentukan StringBuffer(100); StringBuffer( String value) Menginisialisasi dan membuat objek StringBuffer. Parameter berupa String dengan kapasitas 16 ditambah dengan panjang String StringBuffer(“Hello world.”); String Buffer Method StringBuffer capacity() append() String Buffer Method StringBuffer public class Capacity { public static void main(String[] args) { String kata = "Java"; capacity() Method ini digunakan untuk mengetahui kapasitas dari suatu variabel StringBuffer Contoh : Cara diatas akan membuat StringBuffer} } dengan kapasitas 21 (16 ditambah dengan panjang string argument) yang berisi string ”hello”. StringBuffer a = new StringBuffer(); StringBuffer b = new StringBuffer(50); StringBuffer c = new StringBuffer(kata); System.out.println("a = "+a.capacity()); System.out.println("b = "+b.capacity()); System.out.println("c = "+c.capacity()); String Buffer Method StringBuffer public class reverse { public static void main (String[] args){ StringBuffer a = new StringBuffer("Hello"); System.out.println(a); a.reverse(); System.out.println(a); reverse() Method ini digunakan untuk membalik isi dari variabel StringBuffer. } } String Buffer Method StringBuffer public class setCharAt { public static void main(String[] args){ StringBuffer a = new StringBuffer("Java"); a.setCharAt(0,'J'); a.setCharAt(3,'A'); setCharAt(int index, char ch) Method ini digunakan untuk mengubah karakter pada indeks tertentu menjadi karakter lain. System.out.println(a); } } String Buffer Method StringBuffer public class append { public static void main(String[] args){ StringBuffer a = new StringBuffer("Test"); System.out.println(a); a.append("ing"); System.out.println(a); append() Method ini digunakan untuk menambahkan String pada akhir objek StringBuffer. a.append("123"); System.out.println(a); } } String Buffer Method StringBuffer public class insert { public static void main(String[] args){ StringBuffer a = new StringBuffer("Toher"); System.out.println(a); insert(int index, Object obj) method insert() dari class StringBuffer untuk menyisipkan string ke objek StringBuffer pada posisi tertentu. a.insert(2,"get"); System.out.println(a); } } String Buffer Method StringBuffer delete(int start, int end) method delete() untuk menghapus karakterkarakter pada StringBuffer. Method ini mempunyai dua argumen yaitu posisi awal dan akhir. Posisi akhir adalah karakter sebelum karakter pada posisi akhir yang akan dihapus. public class delete { public static void main(String[] args){ StringBuffer a = new StringBuffer("We’ll delete characters from this sentence"); System.out.println(a); a.delete(0,13); System.out.println(a); a.delete(10,33); System.out.println(a); } } String Buffer Method StringBuffer length() method length() mengembalikan panjang dari objek StringBuffer. Jika objek StringBuffer kosong maka mengembalikan nilai 0. public class length { public static void main(String[] args){ StringBuffer a = new StringBuffer("012345"); System.out.println(a.capacity()); System.out.println(a.length()); } } String Buffer String Builder Pengertian StringBuilder Perbedaan StringBuffer dan StringBuilder Perbedaan String dan StringBuilder Pengertian StringBuilder Class StringBuilder ditambahkan di Java 5 • Fungsi-fungsi yang ada di StringBuffer sama seperti fungsi yang ada di StringBuilder. • Java Sun merekomendasikan menggunakan StringBuilder dibandingkan dengan StringBuffer karena StringBuilder dapat berjalan lebih cepat. • Tapi StringBuilder ini tidak aman untuk multiple thread karena tidak mendukung sinkronisasi Kelas java.lang.String sangat tidak efektif bila kita ingin melakukan banyak modifikasi terhadap suatu string, hal ini karena sifat dari kelas java.lang.String yang immutable (banyak modfikasi pada suatu kelas String akan dapat menyebabkan banyaknya objectString yang terlibat). Kelas java.lang.StringBuffer dan java.lang.StringBuildermen gatasi permasalahan ini (mutable) [1]. String Builder Perbedaan String dan StringBuilder Perbedaan utama antara kelas java.lang.StringBuffer dan kelasjava.lang.StringBuilder [1]: Sun merekomendasikan kita menggunakan StringBuilder bila kita tidak berhubungan dengan threading [1] Perbedaan java.lang.StringBuffer java.lang.StringBuilder Thread safe Ya Tidak Kecepatan Lebih lambat dari kelasjava.lang.StringBuilder Lebih cepat dari kelasjava.lang.StringBuffer. String Builder Perbedaan StringBuffer dan StringBuilder Perbedaan lain antara StringBuffer / StringBuilder dengan java.lang.String adalahobject yang berubah saat suatu method dipanggil [2]. Perhatikan contoh berikut [2] : Kelas java.lang.String Kelas java.lang.StringBuilder String s; s = new String(”ABC”); s.concat(“DEF”); System.out.println(s); StringBuilder sb; sb = new StringBuilder(“ABC”); sb.append(“DEF”); System.out.println(sb); Akan mencetak : ABC Akan mencetak : ABCDEF Pada kelas java.lang.String, method-method akan mengembalikan object String baru (hasil modifikasi) tanpa merubah object String tempat method dipanggil (karena immutable)[2]. Pada kelas java.lang.StringBuffer dan java.lang.StringBuilder, method-method akan memodifikasi object tempat method dipanggil, dan kemudian mengembalikan object tersebut sebagai return value dari method [2]. String Builder THANK’S FOR ATTENTION