Class String
Objectives: Mempelajari literal string Mempelajari constructor di string Mempelajari method yang umum digunakan Memahami immutable string Memformat angka ke string
Fakta mengenai class string Object string merepresentasikan sekumpulan karakter. Class string adalah bagian dari java.lang package, sehingga tidak membutuhkan import statement. Seperti class lainnya, String memiliki constructors dan methods. Tidak seperti class lainnya, String memiliki dua operator, + dan += (digunakan untuk menggabung String).
Literal Strings adalah object dari class String yang anonymous didefinisikan menggunakan double quotes di awal dan akhir string. Ini adalah literal string tidak perlu diconstruct dapat di-assign ke variabel dapat digunakan sebagai parameter suatu method atau constructor memiliki method yang bisa dipanggil
Contoh Literal String //assign literal string ke variabel string String nama = Alimun ; //memanggil method dari literal string char firstinitial = Alimun.charAt(0); //memanggil method dari variabel String char firstinitial = name.charat(0);
Immutability Sekali dibuat, string tidak bisa diubah: tidak ada method yang bisa digubakan untuk mengubah nilai string. Object seperti ini, disebut immutable. Immutable objects memiliki sifat yang aman, sebab beberapa reference akan mengacu ke object yang sama dengan nilai yang tetap, tanpa ada kekhawatiran nilai akan berubah
Keuntungan dari Immutability Menggunakan memori lebih sedikit String kata1 = "Java"; String kata2 = kata1; String kata1 = Java"; String kata2 = new String(kata1); kata1 kata1 Java" Java" kata2 Java" kata2 OK Tidak efisien: pembnorosan memory
Kerugian dari Immutability Kurang efisien -- perlu membuat string baru dan menghapus string lama, meskipun perubahannya minimal String kata = java"; char ch = Character.toUpperCase(kata.charAt (0)); kata = ch + kata.substring (1); kata java" Java"
Strings Kosong String kosong tidak memiliki karakter. Panjangnya 0. String kata1 = ""; String kata2 = new String(); String kosong Berbeda dengan string yang tidak diinisialisasi private String errormsg; errormsg adalah null
No Argument Constructors No-argument constructor membuat string kosong. Jarang digunakan. String kosong = new String(); Pendekatan yang umum adalah melakukan assignment suatu variabel dengan literal string yang kosong. String kosong = ;//tidak ada apa2 di antara quotes
Copy Constructors Copy constructor membuat duplikat dari String yang telah ada. Juga jarang digunakan Tidak sama dengan assignment Copy Constructor: Tiap variabel menunjuk ke object string yang berbeda String kata = new String( Java ); String kata2 = new String(kata); kata kata2 Java" Java" Assignment: kedua variabel menunjuk ke object yang sama String kata = Java ; String kata2 = kata; kata kata2 Java"
Constructors lainnya Sebagian besar constructor yang lain menggunakan array bertipe karakter untuk membuat string char[] karakter = { J, a, v, a }; String kata = new String(karakter);// Java
Methods length, charat int length(); Mendapatkan panjang string char charat(i); Mendapatkan karakter di posisi i Posisi karakter dimulai pada posisi 0, seperti array. Problem".length(); Window".charAt (2); Returns:
Methods length, charat int length(); Mendapatkan panjang string char charat(i); Mendapatkan karakter di posisi i Posisi karakter dimulai pada posisi 0, seperti array. Problem".length(); Window".charAt (2); Returns: 7 n'
Methods substring Mengembalikan string baru dengan meng-kopi serangkaian karakter dari string yang ada. String subs = kata.substring (i, k); mengembalikan substring dari posisi i ke k-1 String subs = kata.substring (i); mengembalikan substring dari posisi i hingga akhir television".substring (2,5); immutable".substring (2); bob".substring (9); Returns: television i k television i
Methods substring Mengembalikan string baru dengan meng-kopi serangkaian karakter dari string yang ada. String subs = kata.substring (i, k); mengembalikan substring dari posisi i ke k-1 String subs = kata.substring (i); mengembalikan substring dari posisi i hingga akhir television".substring (2,5); immutable".substring (2); bob".substring (9); television i k television i Returns: lev" mutable" "" (empty string)
Methods Concatenation String kata1 = re, kata2 = think ; kata3 = ing ; int num = 2; String result = kata1 + kata2; //menggabung kata1 dan kata2 rethink String result = kata1.concat (kata2); //menggabung kata1 dan kata2 rethink result += kata3; //menggabung kata1 ke result rethinking result += num; //mengubah num menjadi string //menggabung hasilnya ke result rethinking2
Methods Find (indexof) 0 2 6 9 11 String nama = Presiden Soekarno"; nama.indexof ( P'); 0 nama.indexof ( e'); 2 Returns: nama.indexof ( Soekarno"); 9(mulai posisi nama.indexof ( e', 3); 6 ketiga) nama.indexof ( Bob"); -1 (ngga ketemu) nama.lastindexof ( e'); 11
Methods Equality boolean b = kata1.equals(kata2); returns true jika kata1 sama dengan kata2 boolean b = kata1.equalsignorecase(kata2); returns true jika string kata1 cocok dengan kata2, case-blind b = Raiders.equals( Raiders );//true b = Raiders.equals( raiders );//false b = Raiders.equalsIgnoreCase( raiders );//true if(team.equalsignorecase( raiders )) System.out.println( Go You + team);
Methods Comparisons int diff = kata1.compareto(kata2); returns the difference kata1 - kata2 int diff = kata1.comparetoignorecase(kata2); returns the difference kata1 - kata2, case-blind Biasanya programer tidak peduli dengan perbedaan numeric antara kata1 - kata2, yang diperhatikan biasanya nilai negative, positive atau nol. Sering digunakan untuk condisional if(kata1.compareto(kata2) > 0){ //kata1 setelah kata2 }
Contoh Comparison //negative differences diff = apple.compareto( berry );//a before b diff = Zebra.compareTo( apple );//Z before a diff = dig.compareto( dug );//i before u diff = dig.compareto( digs );//dig is shorter //zero differences diff = apple.compareto( apple );//equal diff = dig.comparetoignorecase( DIG );//equal //positive differences diff = berry.compareto( apple );//b after a diff = apple.compareto( Apple );//a after A diff = BIT.compareTo( BIG );//T after G diff = huge.compareto( hug );//huge is longer
Methods trim String kata2 = kata1.trim (); mengembalikan string baru dari kata1 dengan menghilangkan white space di awal dan di akhir, namun tidak yang di tengah String kata1 = Hi Bob ; String kata2 = kata1.trim(); //kata2 is Hi Bob tidak ada white space di awal atau akhir //kata1 tetap Hi Bob dengan withe spaces
Methods replace String kata2 = kata1.replace(oldch, newch); returns a string baru dari kata1 dimana oldch telah diganti dengan newch String kata1 = rare ; String kata2 = rare.replace( r, d ); //kata2 adalah dade, tapi kata1 tetap rare
Methods Changing Case String kata2 = kata1.touppercase(); String kata3 = kata1.tolowercase(); returns string baru dari kata1 dimana string yang baru sudah diubah jadi huruf kecil semua atau huruf besar semua. String kata1 = HeLLo ; String kata2 = kata1.touppercase();// HELLO String kata3 = kata1.tolowercase();// hello //kata1 tetap HeLLo
Replacements Contoh: untuk mengubah kata1 menjadi huruf besar, maka lakukan hal berikut ini: kata1 = kata1.touppercase(); Kesalahan umum: kata1.touppercase(); kata1 tidak berubah
Numbers ke Strings Cara mengubah angka ke string 1. String s = "" + num; s = + 123;// 123 2. String s = Integer.toString (i); String s = Double.toString (d); s = Integer.toString(123);// 123 s = Double.toString(3.14); // 3.14 Integer dan Double adalah wrapper classes dari java.lang yg merepresentasikan angka sebagai object. Class ini juga memiliki metode statistik 3. String s = String.valueOf (num); s = String.valueOf(123);// 123
StringBuffer StringBuffer itu seperti String tapi bisa dimodifikasi Panjang dan isi data di StringBuffer bisa dimodifikasi dengan pemanggilan method StringBuffer memiliki 3 constructor: StringBuffer() StringBuffer(int size) StringBuffer(String str) 25
Operasi di StringBuffer Prinsip operasi pada StringBuffer adalah method append dan insert, dengan segala variasi input parameter Berikut adalah beberapa append method: StringBuffer append(string str) StringBuffer append(int num) Method append berfungsi untuk menambahkan input data ke bagian 26 akhir buffer
Operasi di StringBuffer Insert method berfungsi untuk menyelipkan suatu input di posisi tertentu Berikut adalah beberapa insert method: StringBuffer insert(int index, String str) StringBuffer insert(int index, char ch) Index untuk menspesifikasikan posisi lokasi insert 27
Operasi di StringBuffer delete() - Menghapus serangkaian string dari posisi start ke posisi start-1 public StringBuffer delete(int start, int end) 28
Operasi di StringBuffer replace() - Mengganti substring di dalam StringBuffer dengan input String public StringBuffer replace(int start, int end, String str) substring() - Mengembalikan String dari posisi start public String substring(int start) 29
Operasi di StringBuffer reverse() - untuk membalik urutan karakter dari belakang ke depan public StringBuffer reverse() length() - untuk mendapatkan total karakter di StringBuffer public int length() 30
Operasi di StringBuffer capacity() - mendapatkan kapasitas dari StringBuffer, public int capacity() charat() - untuk mendapatkan karakter di posisi tertentu public char charat(int index) 31
getchars() - Karakter pada posisi tertentu yang dimulai dan diakhiri pada posisi tsb, di-copy ke input array yang bertipe karakter di posisi tertentu public void getchars(int srcbegin, int srcend, char[] dst, int dstbegin) // nantinya hasil akan diinputkan ke dst dari // posisi dstbegin setlength() - untuk mengeset panjang 32
Review Questions: 1. The String class is part of what package? 2. What does the String class have that other classes do not have? 3. Text enclosed in quotes is called? 4. What is the returned value for Rumplestiltskin.length()? 5. Define immutable objects.
Review (cont d): 6. How does immutability of Strings make Java more efficient? 7. How does immutability of Strings make Java less efficient? 8. How do you declare an empty string? 9. Why are String constructors not used very often? 10. Bob + + Smith is called?
Review (cont d): 11. String city = "Bloomington ; What is returned by city.charat (2)? 12. By city.substring(2, 4)? 13. By city.lastindexof( o )? 14. By city.indexof(3)? 15. What does the trim method do?
Review (cont d): 16. sam.equals( Sam ) returns? 17. What kind of value does sam.compareto( Sam ) return? 18. What will be stored in s? s = mint.replace( t, e ); 19. What does s.touppercase() do to s? 20. Name a simple way to convert a number into a string.