Pemrograman Berorientasi Obyek
String adalah deretan dari karakter. Pada Java
String merupakan sebuah
object.
Java menyediakan class String, StringBuffer dan
StringTokenizer untuk menyimpan dan memroses
string.
+String()
+String(value: String)
+String(value: char[])
+charAt(index: int): char
+compareTo(anotherString: String): int
+compareToIgnoreCase(anotherString: String): int
+concat(anotherString: String): String
+endsWith(suffix: String): boolean
+equals(anotherString: String): boolean
+equalsIgnoreCase(anotherString: String): boolean
+indexOf(ch: int): int
+indexOf(ch: int, fromIndex: int): int
+indexOf(str: String): int
+indexOf(str: String, fromIndex: int): int
+intern(): String
+regionMatches(toffset: int, other: String, offset: int, len: int): boolean
+length(): int
+replace(oldChar: char, newChar: char): String
+startsWith(prefix: String): boolean
+subString(beginIndex: int): String
+subString(beginIndex: int, endIndex: int): String
+toCharArray(): char[]
+toLowerCase(): String
+toString(): String
+toUpperCase(): String
+trim(): String
+copyValueOf(data: char[]): String
+valueOf(c: char): String
+valueOf(data: char[]): String
+valueOf(d: double): String
+valueOf(f: float): String
+valueOf(i: int): String
String merupakan object yang dienkapsulasi dalam class
String (java.lang.String).
Parameter yang digunakan pada method println(String s)
merupakan string literal.
Compiler Java mengubah string literal menjadi sebuah
object string dan meneruskannya kepada println.
Operasi-operasi dalam String:
- Membuat dan menginisialisasi String - Membandingkan String
- Menggabungkan String
String dapat dibuat dari sebuah nilai String atau sebuah
array dari karakter.
Deklarasi pembuatan String dari sebuah String literal
menggunakan sintak:
String string1 = new String(stringLiteral);
Argumen stringLiteral merupakan deretan karakter yang
diapit oleh tanda petik ganda (“…”).
Misal untuk membuat sebuah object String bernama pesan
untuk string literal “Belajar Java!”:
String pesan = new String(“Belajar Java!”);
Atau notasi shorthand untuk membuat string:
String juga dapat dibuat dari array karakter.
char[] charArray = {‘B’, ‘e’, ‘l’, ‘a’, ‘j’, ‘a’, ‘r’, ‘ ’,’J’,
‘a’, ‘v’, ‘a’};
Kita mendapatkan panjang dari sebuah string dengan
memanggil method length().
Misalnya, pesan.length() menghasilkan panjang dari
string pesan.
Method s.charAt(index) dapat digunakan untuk
mendapatkan karakter tertentu pada string s, dimana
index bernilai dari 0 sampai s.length()-1.
Berdasar contoh sebelumnya pemanggilan method
pesan.charAt(0) mengembalikan sebuah karakter ’B’ dan
pesan.charAt(10) menghasilkan ’v’. Sedangkan pesan.length() bernilai 12.
Method concat() digunakan untuk menggabungkan dua
string:
String s3 = s1.concat(s2);
Java juga menyediakan cara yang mudah untuk
menggabungkan string dengan menggunakan tanda tambah (+), misal:
String s4 = pesan + “ dan “ + “HTML!”;
Maka string s4 berisi “Belajar Java dan HTML!”.
Apabila kita menggunakan tanda tambah (+) untuk
menggabungkan sebuah angka dengan string pada method
println, maka angka tersebut dikonversi menjadi string
String merupakan class yang immutable (tidak dapat
berubah).
Setelah sebuah string tercipta, maka nilainya tidak dapat
dimodifikasi.
Misalnya, kita tidak dapat mengganti “Java” pada pesan
menjadi “HTML”.
Jadi yang dapat kita lakukan jika kita ingin mengubah
string pesan dengan memberikan nilai baru kepada pesan:
Sebagai alternatif, kita dapat mengutip substring dari
sebuah string menggunakan method substring pada kelas String yang mempunyai 2 versi:
public String substring(int beginIndex, int endIndex)
Menghasilkan sebuah string baru yang merupakan substring dari string tersebut.
Substring dimulai pada beginIndex yang ditentukan dan berakhir pada karakter pada endIndex-1. Maka panjang dari substring adalah endIndex-beginIndex. Misalnya: String pesan = “Belajar Java”.substring(0,8) + “HTML”;
public String substring(int beginIndex)
Menghasilkan sebuah string baru yang merupakan substring dari string tersebut. Substring dimulai pada beginIndex yang ditentukan hingga akhir dari string.
Operator == hanya akan mengecek apakah string1 dan
string2 menunjuk kepada obyek yang sama; namun tidak akan memberitahu apakah string1 dan string2
Method equals() digunakan untuk membandingkan
kesamaan isi dari object. Misalnya, kita membandingkan isi kedua string:
Method compareTo() juga dapat digunakan untuk
membandingkan dua buah string: s1.compareTo(s2);
Method compareTo() akan menghasilkan nilai 0 jika s1
sama dengan s2, dan akan bernilai kurang dari 0 apabila s1 secara leksikograpikal kurang dari s2 dan bernilai lebih dari 0 apabila s1 secara leksikograpikal lebih dari s2.
Class String juga menyediakan method
equalsIgnoreCase() yang mengabaikan perbedaan huruf besar atau kecil saat membandingkan string dan regionMatches() untuk membandingkan bagian / potongan dari dua string.
Kita juga dapat menggunakan str.startsWith(prefix) untuk
mengecek apakah string str dimulai dengan prefix tertentu dan str.endsWith(suffix) untuk mengecek apakah string str diakhiri dengan sufix tertentu.
String dapat dikonversi menjadi string yang baru dengan
method toLowerCase menjadi huruf kecil semua, toUpperCase menjadi huruf besar semua, trim menghilangkan karakter blank pada akhir kedua string dan replace(oldChar, newChar) yang mengganti sebuah karakter pada string dengan karakter baru yang ditentukan.
Untuk menemukan sebuah karakter atau substring pada
sebuah string digunakan method indexOf. Empat jenis overloading pada method indexOf didefinisikan untuk kelas String:
public int indexOf(int ch)
Menghasilkan index dari karakter pertama pada string yang sesuai dengan karakter yang ditentukan pada ch. Akan bernilai -1 jika karakter yang dicari tidak ditemukan pada string.
public int indexOf(int ch, int fromIndex)
Menghasilkan index dari karakter pertama dalam string dimulai dari karakter pada fromIndex yang sesuai dengan karakter yang ditentukan pada ch. Akan bernilai -1 jika karakter yang dicari tidak ditemukan pada string.
public int indexOf(String str)
Menghasilkan index dari karakter pertama dari substring pada string yang sesuai, yang ditentukan pada str. Akan bernilai -1 jika karakter yang dicari tidak ditemukan pada string.
public int indexOf(String str, int fromIndex)
Menghasilkan index dari karakter pertama dari substring dalam string dimulai dari karakter pada fromIndex yang sesuai dengan string yang ditentukan pada str. Akan
bernilai -1 jika karakter yang dicari tidak ditemukan pada string.
String bukan array, tetapi string dapat diubah menjadi
sebuah array dan sebaliknya.
Untuk mengkonversi sebuah string menjadi array dari
karakter digunakan method toCharArray.
Misalnya, pernyataan berikut mengubah string ‘Java’
menjadi array:
char[] charArray = “Java”.toCharArray();
Maka charArray[0] adalah ‘J’ dan charArray[3] adalah ‘a’.
Untuk mengkonversi array dari karakter menjadi sebuah
string dapat menggunakan konstruktor String(char[]) atau method valueOf(char[]).
String str = new String(new char[]{‘J’, ‘a’, ‘v’, ‘a’});
Method valueOf dapat digunakan untuk mengkonversi
array dari karakter menjadi sebuah string.
Terdapat beberapa versi overloading dari method valueOf
yang dapat dipakai untuk mengkonversi karakter dan angka menjadi string, dengan tipe argumen yang berbeda-beda: char, double, long, int dan float.
Misalnya, untuk mengubah sebuah nilai double menjadi
string dipakai String.valueOf(5.44) yang menghasilkan sebuah string yang berisi karakter-karakter ‘5’, ’.’, ’4’ dan ’4’.
Dan sebaliknya untuk mengubah sebuah string numerik
menjadi angka dipakai Double.parseDouble(str) atau Int.parseInt(str) menghasilkan nilai double atau int.
Java menyediakan sebuah class pembungkus untuk setiap
tipe data primitif.
Kelas-kelas tersebut ialah Character, Boolean, Byte,
Short, Integer, Long, Float, dan Double untuk char, boolean, byte, short, int, long, float, dan double.
Semua class tersebut berada di package java.lang dan
menjadikan nilai data primitif dapat diperlakukan sebagai object.
Class Character mempunyai sebuah constructor dan lebih
+Character(value: char) +charValue(): char
+compareTo(anotherCharacter: Character): int +equals(anotherCharacter: Character): boolean +isDigit(ch: char): boolean
+isLetter(ch: char): boolean
+isLetterOrDigit(ch: char): boolean +isLowerCase(ch: char): boolean +isUpperCase(ch: char): boolean +toLowerCase(ch: char): char +toUpperCase(ch: char): char
Object Character dapat dibuat dari sebuah nilai char, misalnya:
Character character = new Character(‘a’);
Kebanyakan method pada class Character adalah static method.
Method isDigit(char ch) bernilai true jika karakternya sebuah angka. Method isLetter(charch) bernilai true jika karakternya sebuah huruf. Method isLetterorDigit(char ch) bernilai true jika karakternya sebuah
huruf atau angka.
Method isLowerCase(char ch) bernilai true jika karakternya berhuruf
kecil.
Method isUpperCase(char ch) bernilai true jika karakternya berhuruf
besar.
Method toLowerCase(char ch) menghasilkan karakter berhuruf kecil,
dan
Class StringBuffer merupakan alternatif dari class String. StringBuffer lebih fleksibel daripada String.
Kita dapat menambahkan, menyisipkan dan
membubuhkan isi baru terhadap sebuah buffer string, dibandingkan dengan nilai string yang selalu tetap ketika dibuat.
Class StringBuffer menyediakan 3 buah constructor: public StringBuffer()
Membuat sebuah buffer string kosong (tidak ada karakter di dalamnya) dan kapasitas awal 16 karakter.
public StringBuffer(int length)
Membuat sebuah buffer string kosong (tidak ada karakter di dalamnya) dan kapasitas awal ditentukan pada
public StringBuffer(String string)
Membuat sebuah buffer string untuk argumen string dan kapasitas awal 16 karakter ditambah dengan panjang dari argumen string tersebut.
Class StringBuffer mempunyai lebih dari 30 method untuk mengelola
buffer dan memodifikasi string pada buffer:
+append(data: char[]): StringBuffer
+append(data: char[], offset: int, len: int): StringBuffer +append(v: aPrimitiveType): StringBuffer
+append(str: String): StringBuffer +capacity(): int
+charAt(index: int): char
+delete(startIndex: int, endIndex: int): StringBuffer +deleteCharAt(index: int): StringBuffer
+insert(index: int, data: char[], offset: int, len: int): StringBuffer +insert(offset: int, data: char[]): StringBuffer
+insert(offset: int, b: aPrimitiveType): StringBuffer +insert(offset: int, str: String): StringBuffer
+length(): int
+replace(startIndex: int, endIndex: int, str: String): StringBuffer +reverse(): StringBuffer
+setCharAt(index: int, ch: char): void +setLength(newLength: int): void +subString(start: int): StringBuffer
Class StringBuffer menyediakan beberapa method yang
di-overloading untuk membubuhkan boolean, char, char
array, double, float, int, long dan String pada sebuah buffer string.
StringBuffer strBuf = new StringBuffer(); strBuf.append(“Belajar”);
strBuf.append(“ ”);
strBuf.append(“Java”);
Untuk menyisipkan string baru dapat dipakai:
strBuf.insert(8, “HTML dan ”);
Class lain yang berguna untuk pemrosesan string ialah
java.util.StringTokenizer.
Class ini dipakai untuk membagi string menjadi
potongan-potongan sehingga informasi yang terkandung dapat diterima kembali dan diproses.
Misalnya, untuk mendapatkan semua kata pada string
“Saya senang belajar Java di FTI”, kita dapat membuat sebuah instansiasi dari kelas StringTokenizer untuk string tersebut dan mendapatkan setiap kata pada string itu menggunakan method pada kelas StringTokenizer.
+countTokens(): int
+hasMoreTokens(): boolean +nextToken(): String
+nextTokens(delim: String): String
Class StringTokenizer mengenali setiap kata dengan
menentukan sekumpulan karakter sebagai delimiter / pembatas ketika membentuk sebuah object StringTokenizer. Delimiter yang akan membagi sebuah string menjadi potongan-potongan yang disebut tokens.
Class StringTokenizer mempunyai 3 constructor:
public StringTokenizer(String s, String delim, boolean
returnTokens)
Membentuk sebuah StringTokenizer untuk sebuah string s dengan delimiter tertentu. Jika returnTokens bernilai true, delimiter akan dikembalikan sebagai sebuah token.
public StringTokenizer(String s, String delim)
Membentuk sebuah StringTokenizer untuk sebuah string s dengan delimiter tertentu delim, yang bukan merupakan sebuah token.
public StringTokenizer(String s)
Membentuk sebuah StringTokenizer untuk sebuah string s dengan delimiter default “ \t\n\r” (spasi, tab, pergantian garis baru / new line & carriage return) dan delimiter bukan merupakan sebuah token.
Method hasMoreToken() bernilai true jika terdapat token
yang tersisa pada string. Method nextToken()
menghasilkan token selanjutnya pada string, sedangkan nextToken(String delim) menghasilkan token selanjutnya pada string setelah menempatkan delimiter / pembatas yaitu delim. Method countTokens() bernilai jumlah token yang terdapat pada string tokenizer.
Modifikasi Contoh Program 1.1 sebelumnya untuk
mengubah String (kalimat) menjadi format TitleCase (Huruf pertama setiap kata adalah huruf kapital dan sisanya huruf kecil).
Stream adalah proses untuk membaca data dari suatu
sumber atau menulis data ke suatu tujuan.
class stream ini berada paket java.io jadi untuk
menggunakan harus diimpor terlebih dahulu.
Class InputStream merupakan class abstrak yang menjadi
dasar bagi semua class yang berhubungan dengan
pembacaan data dari suatu sumber. Method-method yang sering dipakai:
int available() Metode ini mengembalikan jumlah data
yang telah tersedia untuk dibaca.
void close(). Method untuk menutup stream.
int read() Method untuk membaca sebuah byte data,
Class OutputStream merupakan class abstrak yang
menjadi dasar untuk semua stream keluaran. Method-methodnya:
void clear() Method untuk menutup stream keluaran. void flush() Method ini memaksa penulisan.
void write(int b) Method untuk menuliskan byte b ke
stream keluaran.
Class ByteArrayOutputStream merupakan class yang
digunakan untuk mengirimkan keluaran ke suatu array dengan elemen bertipe byte.
Class FileInputStream digunakan untuk membaca data
dari suatu file.
Class SequenceInputStream digunakan untuk
menggabungkan dua buah stream masukan atau lebih menjadi sebuah stream masukan.
Class DataInputStream digunakan untuk membaca data
yang memiliki format khusus ke stream masukan.
Class BufferedInputStream adalah class yang digunakan
untuk membuat stream masukan berpenyangga. Tujuan penyanggaan ini adalah untuk membuat pembacaan data pada file dilakukan secara efisien.
Class FileOutputStream digunakan untuk menulis
keluaran ke suatu berkas.
Class DataOuputStream digunakan untuk menuliskan
berbagai tipe data ke stream keluaran dalam berbagai format yang tak bergantung pada mesin.
Class BufferedOutputStream adalah class yang digunakan
untuk membuat stream keluaran berpenyangga. Tujuan penyanggaan agar penulisan ke file dapat dilakukan
Buat sebuah file .txt dengan isi terserah Anda lalu simpan dalam drive
komputer Anda.
Buat program Java untuk memanggil file txt tersebut dan
Modifikasi program Title Case sebelumnya sehingga dapat
mengubah inputan berupa kalimat ke bentuk TitleCase dan menyimpannya dalam sebuah file .txt
Dikerjakan secara kelompok max 5 mahasiswa.
Dikumpulkan dalam bentuk hardcopy yang berisi
kode program, output dan penjelasan kode
program sejelas-jelasnya.