Operasi Teks, String & Stream

Download Report

Transcript Operasi Teks, String & Stream

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
+valueOf(l: long): 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
- Mengakses karakter pada String





String dapat dibuat dari sebuah nilai String atau sebuah
array dari karakter.
Deklarasi pembuatan String dari sebuah String literal
menggunakan sintak:
String new String = 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 pesan = “Belajar Java!”;
String juga dapat dibuat dari array karakter.
char[] charArray = {‘B’, ‘e’, ‘l’, ‘a’, ‘j’, ‘a’, ‘r’, ‘ ’,’J’,
‘a’, ‘v’, ‘a’};
 String pesan = new String(charArray);






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
terlebih dahulu sebelum digabungkan.





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:
Pesan = “Belajar HTML”;


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
mempunyai isi yang sama, meskipun berbeda object.

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.

Contoh:




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’});
String str = String.valueOf(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
dari 30 method untuk memanipulasi sebuah karakter.
+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
Method toUpperCase(char ch) menghasilkan karakter berhuruf besar.
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
argumen length.




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
+subString(start: int, end: int): StringBuffer


Class StringBuffer menyediakan beberapa method yang dioverloading 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 ”);
Maka strBuf berisi “Belajar HTML dan Java”.



Class lain yang berguna untuk pemrosesan string ialah
java.util.StringTokenizer.
Class ini dipakai untuk membagi string menjadi potonganpotongan 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).
Output:



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.
Hirarki kelas stream:




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,
nilai data yang dikembalikan.





Class OutputStream merupakan class abstra k yang
menjadi dasar untuk semua stream keluaran. Methodmethodnya:
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
secara efisien.


Buat sebuah file .txt dengan isi terserah Anda lalu simpan dalam drive
komputer Anda.
Buat program Java untuk memanggil file txt tersebut dan
menampilkan isi teksnya. Kodingnya:

Modifikasi program Title Case sebelumnya sehingga dapat
mengubah inputan berupa kalimat ke bentuk TitleCase
dan menyimpannya dalam sebuah file .txt