Ada dua cara yang dapat digunakan untuk melakukan modifikasi pada string, yaitu

A. Tujuan Pembelajaran

Setelah mengikuti kegiatan belajar 4 ini siswa diharapkan dapat : 1] Memahami mekanisme penangganan kesalahan.

2] Menyajikan bermacam-macam cara untuk mencari tipe kesalahan.

B. Uraian Materi

1] Pengolahan String

Dalam pemrograman Java string merupakan aspek penting, karena dapatmempelajari mengenai class dan objek melalui penggunaan string. String sebenarnyamerupakan class yang terdapat dalam library Java. Java String merupakan salah satukelas dasar yang disediakan oleh Java untuk memanipulasi karakter.

Membuat Objek String

Java mendefinisikan class String dalam package java.lang.String, sehingga tidak perlu melakukan impor secara eksplisit. Java String digunakan untuk mendefinisikan string yang konstant [ tidak bisa berubah

Menggabungkan String

Seringkali dalam pemrograman kita perlu menggabungkan String untuk mendapatkan String baru. Kita dapat menggunakan operator [+] untuk menggabungkan beberapa String.

Contoh penggunaan :

Stringku = “Ini adalah contoh”+”penggabungan String”;

Kita juga dapat menggunakan operator += untuk menggabungkan variabel String,

misalnya seperti contoh berikut : String kata = ”Ini perkataan”; Kata += “saya sendiri”;

60 | P a g e  Menentukan Awal Dan Akhir String

Untuk menentukan awal dan akhir String, kita dapat menggunakan dua fungsi utama, yaitu : startsWith[String s]

Dengan fungsi ini, maka objek String yang bersangkutan akan diperiksa,

apakah diawali oleh objek String s, pada parameter fungsi ini endsWith[String s] Dengan fungsi ini, maka objek string yang bersangkutan akan diperiksa,

apakah diakhiri oleh objek string s, pada parameter fungsi ini.

Fungsi diatas akan menghasilkan nilai boolean true bila benar dan false bila salah.

Mengurutkan String

Dapat juga melakukan pengurutan string dengan method compareTo[].Method ini membandingkan karakter-karakter pada String secara berurutan dari awal String. Misalnya string pertama bernilai “a” dan string kedua bernilai “b”, maka apabila Stringpertama.compareTo[Stringkedua] akan menghasilkan nilai negatif [0]. Nilai 0 akandihasilkan apabila string pertama dan kedua sama.

Mendapatkan Panjang String

Kita dapat memperoleh panjang string dengan menggunakan method length[]; seperti contoh berikut ini :

String panjang = “ini panjangnya17”;

System out.println[panjang.length[]];

Mencari Posisi Karater Atau SubString Dari String

Ada dua method yang dapat digunakan untuk mencari posisi karakter dari string dan dua method untuk mendapatkan posisi subString dari string.

Method untuk mencari posisi karakter pada String :

IndexOfchar [karakter]Memerlukan argumen berupa karakter dan akan mengembalikan nilai posisiindeks dari karakter yang dicari. Posisi yang dikembalikan adalah posisipertama dari karakter yang ditemukan. Bila karakter

61 | P a g e tidak ditemukan, makaakan mengembalikan nilai -1.IndexOf[char karakter, int indeks] sama dengan sebelumnya, tetapi memerlukan argumen tambahan, yaitu indeks posisi awal pencarian dalam integer.

Method untuk mencari posisi subString pada String :

indexOf[String Str]Penggunaan dan fungsi sama dengan method untuk char. indexOf[String str, ont indeks]Penggunaan dan fungsi sama dengan method untuk char.

2] StringBuffer

StringBufferadalah pasangan class String yang menyediakan banyak fungsi string yang umum. StringBuffer merepresentasikan urutan karakter yang dapat dikembangkan dan ditulis ulang. StringBuffer dapat disisipi karakter dan subString di tengahnya, atau ditambah di belakangnya. StringBuffer memiliki default kapasitas 16 karakter, tapi biasanya ukuran diatur sendiri dengan mendefinisikan kapasitas pada saat pembuatan.

Misalnya adalah sebagai berikut:StringBuffer baru = new StringBuffer[50]; Contoh diatas merupakan StringBuffer kosong dengan kapasitas 50 karakter. Ada 3 cara untuk mengefinisikan StringBuffer :

StringBuffer baru = new StringBuffer[]

secara tidak langsung variabel baru akan menjadi objek StringBuffer dengan ukuran 16 karakter karena defaultnya adalah 16 karakter

StringBuffer baru1 = new StringBuffer[50]

objek baru1 merupakan StringBuffer dengan panjang karakter 50  StringBuffer baru2 = new StringBuffer[String]

objek baru2 merupakan objek StringBuffer dengan panjang karakter String + 16 karakter.

Berikut merupakan contoh deklarasi StringBuffer : Listing Program

1 public class SB{

2 public static void main [String args[]]{ 3 String kata = "Java";

62 | P a g e 5 StringBuffer baru1 = new StringBuffer[50];

6 StringBuffer baru2 = new StringBuffer[kata]; 7 System.out.println["baru : "+baru.capacity[]]; 8 System.out.println["baru1 : "+baru1.capacity[]]; 9 System.out.println["baru1 : "+baru2.capacity[]]; 10 }

11 }

Berbeda denga type data primitif yang lain, type data String dalam Java diperlakukan sebagai object. Object String dalam Java dapat dibuat dengan dua cara, yaitu:

Penulisan sesuatu di dalam tanda antara petik ganda [literal String]. Cara ini digunakan untuk mengakomodasi kebiasaan dari bahasa C/C++

 String s = ”Hello World”;

 System.out.println[“Hello World”]; Pembuatan object String dengan keyword new.

 String s = new String[“Halo”];

Class String mempunyai atribut final, sehingga Class String tidak dapat di- extends / diturunkan.

Dalam Java, terdapat dua 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.

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. Sedangkan bila kita membuat String dengan keyword new, maka object String tersebut akan berada di dalam heap [tetapi diluar String constant pool]. Khusus untuk pembuatan object String dengan keyword new [ex: String sample = new String[“Hello World”] ], sebenarnya terdiri dari 3 buah proses [yang melibatkan 2 buah object String], yaitu :

 Pembuatan object String “Hello World” di dalam String constant pool. Hal ini karena “Hello World” adalah literal String yang otomatis membuat object di String constant pool.

63 | P a g e  Penghapusan object String “Hello World” di dalam String constant pool

[bila tidak ada yang mereferensi String] ini.

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.

Object String adalah immutable [tidak dapat diubah] . Pengertian tidak dapat diubah adalah, 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 bukan object String tersebut.

String Class sangat tidak efektif bila kita ingin melakukan banyak modifikasi terhadap suatu String object, hal ini karena sifat dari String Class yang immutable [banyak modfikasi pada suatu kelas String akan dapat menyebabkan banyaknya object String yang terlibat]. StringBuffer dan StringBuilder Class mengatasi permasalahan ini [mutable]. StringBuffer thread safe sehingga dapat menjamin konsistensi operasi pada String object.

Pada String Class, method-method akan mengembalikan object String baru [hasil modifikasi] tanpa mengubah object String tempat method dipanggil [karena immutable]Pada kelas StringBuffer Class method-method akan memodifikasi object tempat method dipanggil, dan kemudian mengembalikan object tersebut sebagai return value dari method.Method utama pada StringBuffer adalah append dan insert method.Dan dengan Class StringBuffer kita dapat melakukan chaining method.

3] Konstruktor

Konstruktor pada Java merupakan method khusus yang dipakai oleh Java untuk membuat sebuah object didalam kelas dan tiap kelas boleh memiliki lebih dari satu konstruktor.

64 | P a g e Karakteristik konstruktor :

1. Nama Konstruktor = Nama Kelas.

2. Tidak mengembalikan nilai atau return value termasuk void.

3. Cara menggunakan konstruktor adalah dengan menggunakan kata kunci new. Jika didalam kelas tidak dituliskan konstruktor, Java akan secara default menambahkan konstruktor kosong kedalam kelas tersebut.  Pemanggilan Konstruktor

Membuat konstruktor Listing Program

1 public class Constr{ 2 Constr []

3 { 4 } 5 }

Konstruktor dipanggil saat membuat sebuah object. Sama seperti membuat object pada class.

Contoh :

Listing Program

1 public class Constructor_1{ 2 float nilaiAkhir;

3 public Constructor_1[int nilai_akhir]{ 4 nilaiAkhir=nilai_akhir;

5 }

6 public String grade[]{ 7 String nilaigrade; 8 if[nilaiAkhir>=50] 9 nilaigrade=”Bagus”; 10 else 11 nilaigrade=”Jelek”; 12 return nilaigrade; 13 }

65 | P a g e 15 System.out.println[“Grade nilainya = “+grade[]];

16 }

17 public static void main [String [] args]{ 18 Constructor_1 hasil = new Constructor_1[67]; 19 hasil.cetak[];

20 } 21 }

Overload Konstruktor

Sebuah class mungkin memiliki lebih dari satu konstruktor dengan parameter yang berbeda satu sama lainnya.

Contoh :

Listing Program

1 public class Constructor_2{ 2 float nilai1, nilai2;

3 public Constructor_2[int bil1]{ 4 nilai1 = bil1;

5 }

6 public Constructor_2[int bil1, bil2]{ 7 nilai = bil1+bil2;

8 }

9 public String grade[] 10 {

11 String nilaigrade; 12 if[nilai1>=50]

13 nilaigrade = “Bagus”; 14 else

15 nilai grade = “Jelek”; 16 return nilaigrade; 17 }

18 public void cetak[]{

19 System.out.println[“Grade nilainya = “+grade[]]; 20 }

66 | P a g e 22 Constructor_2 hasil = new Constructor_2 [45];

23 hasil.cetak[];

24 Constructor_2 hasilnya = new Constructor_2 [45,35]; 25 hasilnya.cetak[];

26 } 27 }

4] Modifier

Modifier digunakan untuk menentukan sifat dari suatu kelas dan menentukan preveledge [hak akses] dari kelas lain. Modifier juga digunakan untuk

menentukan relasi [extend atau implements] dengan kelas lainnya. Berikut ini adalah wilayah modifier akses :

Wilayah Akses Public Protected Default Private

Dikelas yang sama    

Beda kelas, di package yang sama

   

Beda kelas, beda package, dikelas turunan

   

Beda kelas, beda package, tidak di kelas turunan

   

Keterangan :

1. Public : menyatakan bahwa kelas/ method/ attribute dapat diakses oleh kelas lain dimanapun letaknya.

2. Protected : menyatakan bahwa kelas/ method/ attribute tersebut dapat diakses oleh kelas lain yang berada dalam satu package atau kelas lain tersebut merupakan turunannya.

3. Private : menyatakan bahwa kelas tersebut tidak dapat diakses sama sekali oleh kelas lain bahkan tidak dapat diakses oleh kelas turunannya. Attribute yang bersifat private hanya dapat diakses oleh method dalam kelas yang sama, kelas lain masih dapat mengakses melalui method tersebut asal method tersebut modifiernya public.

67 | P a g e 5] Class String

String pada java adalah object dan sifatnya read-only [immutable].Karena sifat immutable ini setiap perubahan terhadap isi string akan dibuat string baru untuk menampung perubahan tersebut.

Contoh :

String s1 = “hello world”; S1 = “hello java”;

Akan menyebabkan dua kali pengalokasian memory untuk dua objek string tersebut diatas, dengan referensi terakhir s1 ke string “hello java”.

Operator Pada String

Anda dapat menggunakan operator + untuk mengabungan dua string atau string dengan type data primitive lainnya [menyebabkan konversi otomatis dari type lain ke string].

Contoh :Str = “Jumlah data “ + jd;  Method pada class String Str.length[]

Str.compareTo[String Str1]

Str.compareToIgnoreCase[String Str1] Str.concat[String Str1]

Str.equals[String Str1], membandingkan isi Str sama dengan Str1 Str.equalsIgnoreCase[String Str1]

Str.startsWith[String prefix]

Str.startsWith[String prefix, int offset] Str.endsWith[String suffix]

Str.indexOf[int ch]

Str.indexOf[int ch, int fromIndex] Str.indexOf[String str]

Str.indexOf[String str, int fromIndex]

Static String.valueOf[value], mengembalikan string dari suatu nilai Boolean, char, char array, int, long, double, float.

Untuk pencarian dari akhir string gunakan lastIndexOf Str.trim[], menghapus white space diawal dan akhir string

68 | P a g e Str.toLowerCase[]

Str.toUpperCase[] Str.charAT[]

Contoh : Metode Enkripsi Ceasar secara substitusi. M = [C+3] Mod 26  Class StringBuffer

StringBuffer merupakan string yang sifatnya mutable yang isinya dapat dimanipulasi, sebingga sangat menghemat system resource dan performance yang lebih baik pada operasi yang banyak melakukan manipulasi terhadap isi string.

StringBuffer sb =new StringBuffer[] ; //StringBuffer dengan kapasitas 16

StringBuffer sb = new StringBuffer[30]; //StringBuffer dengan kapasitas 30StringBuffer sb = new StringBuffer[“HendraSoewarno”];

Method pada class StringBuffer

Sb.ensureCapacity[int kapasitas], set kapasitas StringBuffer ke ukuran baru. Sb.append[value].

Sb.append[Char[] str, int offset, int len]

Sb.capacity[], mengembalikan ukuran kapasitas StringBuffer

Sb.charAt[int index], mengembalikan karakter pada posisi tertentu dari StringBuffer, index dimulai dari 0 [nol].

Sb.delete[int start, int end], menghapus sejumlah karakter dari StringBuffer Sb.deleteChatAt[int index]

Sb.getChars[int srcBegin, int srcEnd, Char[] dst, int dstBegin] Sb.insert[int offset, value]

Sb.length[] Sb.reverse[]

Sb.setCharAt[int index, char ch] Sb.setLength[int newLength] Sb.substring[int start]

Sb.substring[int start, int end] Sb.toString[]

69 | P a g e Contoh :

Listing Program 1 class C3 {

2 protected String plainText; 3 C3[] {

4 plainText = ""; 5 }

6 void setPlainText[String newValue] { 7 plainText = newValue;

8 }

9 String getCipherText[] {

10 StringBuffer result = new StringBuffer[""]; 11 char huruf;

12 for [int i=0; i < plainText.length[]; i++] { 13 if [plainText.charAt[i] != 32] {

14 huruf = [char][[plainText.charAt[i] - 'A' + 3] % 26 + 'A']; 15 result.append[huruf]; 16 } 17 } 18 return result.toString[]; 19 } 20 }

Contoh dengan Argument String Listing Program

1 class testArgs {

2 public static void main[String[] args] { 3 C3 c = new C3[];

4 if [args.length < 1]

5 System.out.println["Usage: java testArgs "];

6 else {

70 | P a g e 8 System.out.println["Hasil adalah : "+c.getCipherText[]]; 9 } 10 } 11 }

Untuk menjalankan program diatas gunakan : java testArgs

Contoh dengan GUI Listing Program

1 import javax.swing.*; 2 import java.awt.*;

3 import java.awt.event.*; 4 class testString {

5 public static void main[String[] args] { 6 final C3 c = new C3[];

7 final JFrame frame = new JFrame["Enkripsi RC3"]; 8 JLabel label = new JLabel["Plaintext :"];

9 final JLabel labelh = new JLabel["Hasil :"]; 10 final JTextField textField = new JTextField[20]; 11 JButton button = new JButton["Encrypt"];

12 button.setMnemonic['E'];

13 button.addActionListener[new ActionListener[] { 14 public void actionPerformed[ActionEvent e] { 15 c.setPlainText[textField.getText[]];

16 labelh.setText["Hasil adalah : "+c.getCipherText[]]; 17 frame.pack[]; 18 } 19 }]; 20 frame.getContentPane[].setLayout[new FlowLayout[]]; 21 frame.getContentPane[].add[label]; 22 frame.getContentPane[].add[textField];

71 | P a g e 23 frame.getContentPane[].add[button]; 24 frame.getContentPane[].add[labelh]; 25 frame.pack[]; 26 frame.show[]; 27 frame.setDefaultCloseOperation[JFrame.EXIT_ON_CLOSE]; 28 } 29 }  Class StringBuilder

Kelas StringBuilder menyediakan beberapa method ter-overload untuk menyambung Boolean, char, array char, double, float, int, long, dan String kedalam suatu StringBuilder. Contohnya seperti pada kode dibawah ini

menyambungkan String dan char kedalam StringBuilder untuk membentuk suatu String baru.

Listing Program

1 stringBuilder stringBuilder = new StringBuilder[]; 2 stringBuilder.append[“JAVA”];

3 stringBuilder.append[‘ ‘]; 4 stringBuilder.append[“itu”]; 5 stringBuilder.append[‘ ‘];

6 stringBuilder.append[“Tangguh !”];

Kelas StringBuilder juga dapat menyisipkan boolean, char, array char, double, float, int, long, dan String. Contohnya :

Listing Program

1 stringBuilder.insert [5, “dan HTML”];

Beberapa karakter dapat dihapus dari suatu String dalam StringBuilder

menggunakan dua method delete, membalikkan string menggunakan method reserve, mengganti karakter menggunakan method replace, atau menetapkan suatu karakter baru didalam suatu String menggunakan method setCharAt.

72 | P a g e Contoh :

Listing Program

1 stringBuilder.delete [4,7] mengubah builder menjadi JAVA Tangguh!.

2 stringBuilder.deleteCharAt [5] mengubah builder menjadi JAVA tu Tangguh!.

3 stringBuilder.reserve [] mengubah builder menjadi !huggaT uti AVAJ

4 stringBuilder.replace [0, 3, “HTML”] mengubah builder menjadi HTML itu Tangguh !.

5 stringBuilder.setCharAt[0, ‘j’] menetapkan builder menjadi jAVA itu Tangguh!.

C. Rangkuman

String merupakan class yang terdapat dalam library java. Java string merupakan salah satu kelas dasar yang disediakan oleh java untuk memanipulasi karakter. String bersifat immutable, sehingga perubahan terhadap isi String akan dibuat String baru untuk menampung perubahan tersebut.

StringBuffer merepresentasikan urutan karakter yang dapat dikembangkan dan ditulis ulang. StringBuffer dapat disisipi karakter dan sub String ditengah atau dibelakang. Default StringBuffer memiliki 16 karakter, namun ukuran default ini dapa diatur dengan mendefinisikan kapasitas saat pembuatan.StringBuffer bersifat mutable yang isinya dapat dimanipulasi, sehingga dapat menghemat resource dan performance lebih baik pada operasi yang memanipulasi isi String. Konstruktor merupakan method khusus yang dipakai oleh java untuk membuat sebuah objek didalam kelas, dan setiap kelas boleh memiliki lebih dari satu kontruktor.

73 | P a g e D. Tugas

Tugas 1

Buatlah suatu metode yang mencari jumlah huruf didalam String menggunakan header berikut ini :

public static int hitungHuruf [String s]

Buat program uji yang meminta pengguna untuk memasukkan suatu string dan yang menampilkan jumlah huruf didalam string.

Mengamati Listing Program dan Output Program

1. Tentukan nama class yang akan digunakan. 2. Tentukan variabel yang akan digunakan. 3. Tentukan method yang akan digunakan.

4. Buatlah class diagram yang menggambarkan bagian-bagian dari class yang telah ditentukan. Contoh class diagram :

Nama class

Method

Operasi

5. Buatlah listing programnya.

6. Lakukan kompilasi dan debug pada program.

No Output Program 1. 2. 3. 4. 5.

74 | P a g e 6.

7. 8.

Bandingkan dan Simpulkan

Bandingkan hasil program yang telah kamu buat dengan hasil program teman sebangku atau kelompok lain

Dari hasil perbandingan tersebut, hal penting apa yang harus dirumuskan secara bersama

E. Tes Formatif

Dalam test ini setiap anda harus membaca dengan cermat dan teliti setiap butir soal dibawah ini. Kemudian berdasarkan uraian materi diatas tulislah jawabannya pada lembar jawaban test formatif yang telah disediakan.

1. Apa perbedaan konstruktor dengan method? 2. Apakah output dari kode berikut ini !

Listing Program

1 String s1 = “JAVA itu tangguh!”; 2 String s2 = s1.replace [“V” , “abc”]; 3 System.out.println[s1];

4 System.out.println[s1];

3. Sebutkan dan jelaskan 3 konstruktor dalam StringBuffer !

4. Tuliskan 3 statement untuk membalik string s menggunakan method reserve dalam kelas StringBuilder !

75 | P a g e F. Lembar Jawaban Test Formatif [LJ].

LJ- 01 :Perbedaan konstruktor dengan method

... ... ... ... ... ...

LJ- 02 : Output dari kode :

... ... ... ... ... ...

LJ- 03 : 3 konstruktor dalam StringBuffer

... ... ... ... ... ... ...

LJ- 04: 3 Statement untuk membalik string s menggunakan method reserve : ... ... ... ... ...

76 | P a g e G. Lembar Kerja Siswa

77 | P a g e 5.

Kegiatan 5 : Array

A. Tujuan Pembelajaran

Setelah mengikuti kegiatan belajar 5 ini siswa diharapkan dapat : 1] Memahami data collection sebagai media penyimpanan 2] Menyajikan data collection sebagai penyimpan data

B. Uraian Materi 1] Deklarasi Array

Array digunakan untuk membuat variabel bisa menampung beberapa data dengan tipe data yang sama alias satu tipe data. Ciri khas varibel yang menggunakan array adalah terdapat simbol []. Unyuk mengetahui panjang array yang telah kita buat, kita dapat memakai property length, dengan format sebagai berikut :

var_array.length total elemen array pada dimensi 1. var_array[i].length total elemen array pada dimensi 2 untuk

indeks ke-i pada dimensi 1.

var_array[i][i].length total elemen array pada dimensi 3 untuk indeks ke-I pada dimensi 1 dan indeks ke-I pada dimensi 2dan seterusnya.

Isi dari suatu array dapat kita copy pada array yang lain dengan memanfaatkan method arraycopy[] pada class System. Format penulisannya sebagai berikut :

System.arraycopy [array1, p1, array2, p2, n];

Array memiliki dua tipe, yaituSingle Dimension dan Multi Dimension, sedangkan Proses pendeklarasian variabel yang menggunakan array ada 2 tipe :

Array Single Dimension

o Pendeklarasian Variabel Menggunakan Array Tipe Pertama

Variabel yang menggunakan array, array ditentukan length/panjangnya terlebih dahulu, sehabis itu baru di inisialisasi.

Contoh :

78 | P a g e Listing Program

1 public class Array1{

2 public static void main [String args []] { 3 int nilai [] = new int [3];

4 nilai [0] = 70; 5 nilai [1] = 80; 6 nilai [2] = 65;

7 double ratarata = 0.0;

8 for [int i=0; i

Bài mới nhất

Chủ Đề