OOP BAB 4 Tipe Data String
OOP BAB 4 Tipe Data String
Tipe data string digunakan untuk menyimpan sekumpulan karakter. Berbeda dengan
character yang hanya dapat menyimpan satu karakter, string juga dapat menyiman
kata/kalimat.
Bahasa java telah menyediakan tipe data string. Tipe data ini bersifat dinamis. Artinya,
kita tidak perlu menentukan terlebih dahulu berapa panjang maksimal dari isi string
tersebut.
Tipe data string bersifat non-primitif
Contoh penulisan data string:
String bersifat immutable, artinya data tidak dapat berubah. Perhatikan contoh berikut:
String s =Java;
s = HTML;
Statement pertama membuat String object dengan isi Java dan ditandai dengan s.
Statement kedua membuat String object dengan isi HTML dan sitandai dengan s/
string object yang pertama tetap ada setelah dibuat, tapi itu tidak akan bisa diakses,
karena variable s sekarang menunjuk objek baru yaitu HTML
Gambar2. String bersifat immutable. Sekali dibuat, maka isinya tidak akan berubah
String bersifat immutable dan ada dimana-mana dalam sebuah pemograman. Oleh sebab itu
JVM menggunakan contoh unik utnuk menerjemahkan string dengan urutan karakter yang
sama. Hal ini berguna untuk meningkatkan efesiensi dan menghemat memori. Contoh seperti
itu dinamakan interned string . coba lihat contoh di bawah ini:
String s1 = Welcome to Java;
String s2 = new String (Welcome to Java);
String s3 = Welcome to Java;
System.out.println(s1==s2 is + (s1==s2));
System.out.println(s1==s3 is + (s1==s3));
Maka akan keluar seperti ini:
S1==s2 is false
S1==s3 is true
Pada statement di atas, s1 dan s3 merujuk pada interned string yang samaWelcome to Java.
S1 tidak sama dengan s2 karena s1 dan s2 adalah string object yang berbeda walaupun memiliki
isi yang sama.
Contoh lain:
String s1 = Yow!;
String s2 = s1;
Visualisasi:
Yow
S1 S2
Visualisasi:
S1 Yow
String Operation
String adalah kelas yang menangani deretan karakter. Kelas ini mendukung sejumlah
metode yang sangat berguna untuk memanipulasi string, misalnya untuk mengknversi
huruf kecil menjadi capital, memperoleh jumlah karakter dan sebagainya.
1. Metode substring (int indeks)
Fungsi : menghasilkan objek string yang berisi substring dimulai dari posisi indeks
suatu teks.
2. Metode substring (int indeksAwal, int indeksAkhir)
Fungsi : menghasilkan objek string yang berisi substring dimulai posisi
indeksAwal hingga posisi indeks Akhir suatu teks.
3. Metode charAt(int indeks)
Fungsi : menghasilkan karakter yang terletak pada posisi indeks
4. Metode length()
Fungsi : menghasilkan jumlah karakter dari suatu teks.
5. Metode concat(String kata)
Fungsi : menghasilkan objek string yang merupakan gabungan dari string kata.
6. Metode replace(char lama, char baru)
Fungsi : menghasilkan objek string yang berisi string dengan semua karakter
dengan huruf lama digantikan dengan karakter huruf baru.
7. Metode toLowerCase()
Fungsi : menghasilkan objek string dengan seluruh huruf kecil.
8. Metode toUpperCase()
Fungsi : menghasilkan objek string dengan seluruh huruf kapital.
9. Metode trim()
Fungsi : menghasilkan objek string yang menghilangkan spasi di awal dan di akhir
string.
10. Metode equals()
Fungsi : membandingkan suatu teks sesuai format.
11. Metode equalsIgnoreCase()
Fungsi : membandingkan suatu teks dengan mengabaikan format.
Java I/O Stream
Dalam java terdapat 3 cara untuk membaca data dari keyboard yaitu :
1. Scanner
Untuk membaca input dengan scanner perlu menginputkan jdk scanner di awal
program dengan instruksi import java.util.Scanner;Untuk mengambil data dari
keyboard menggunakan instruksi Scanner input = new Scanner(System.Int); dan
untuk memasukan data yang diinputkan ke variabel(misalnya variabel a yang telah
dideklarasikan) dengan cara berikut a=input.nextInt(); contoh program dengan
scanner.
2. BufferredReader
Untuk mengconstruct bufferredreader (chars into entire lines of text) digunakan
inputStreamReader (compose into characters, typically 2 bytes) dan untuk
menconstruct inputstreamreader dibutuhkan inputstream(read raw data from
keyboard) dan untuk mengkonstruct inputstream digunakan system in isone (figure
this out from online java library)
Stream dapat didefinisikan sebagai sequence data baik dari sumber data atau tujuan
data. Pada Java I/O stream terdapat dua buah stream yang digunakan yaitu stream
karakter dan stream byte. Sesuai dengan namanya, strem byte digunakan untuk
menyimpan informasi data dalam bentuk byte. Sedangkan stream karakter
digunakan untuk proses I/O yang melibatkan data- data dalam bentuk karakter.
Stream karakter menggunakan karakter Unicode. Dalam Java, stream didefinisikan
dengan menggunakan empat kelas abstrak yaitu: InputStream, OutputStream,
Reader, Writer.
InputStream dan OutputStream merupakan kelas abstrak yang dirancang sebagai
kelas induk untuk kelas kelas yang termasuk dalam kategori stream byte.
Sedangkan Reader dan Writer merupakan kelas abstrak yang akan diturunkan
menjadi kelas baru dalam kategori stream karakter. Melalui proses pewarisan
(inheritance), semua kelas yang diturunkan dari kelas InputStream dan Reader
memiliki method read() untuk melakukan pembacaan data. Sedangkan kelas yang
diturunkan dari kelas OutputStream dan Writer memiliki method write() yang
digunakan untuk melakukan penulisan data.
Menggunakan kelas Byte stream atau Character stream? Dari referensi yang saya
baca, jika kita bekerja dengan data bukan binary, maka sebaiknya kita menggunakan
kelas-kelas yang diturunkan dari kelas Reader dan Writer (Character stream).
3. JoptionPane
JOptionPane merupakan class yang digunakan sebagai standar dialog box untuk
antarmuka pengguna grafis (GUI) untuk Memfasilitasi entri data dan output data,
memberikan informasi kepada pengguna aplikasi. Sebenarnya JOptionPane
memiliki banyak method, dan kebayakan method tersebut static method. Berikut
ini 4 method dari JOptionPane yang sering digunakan.
showConfirmDialog
showInputDialog
showMessageDialog
showOptionDialog
JoptionPane Konstruktor
JOptionPane ()
Menciptakan JOptionPane dengan pesan text.
import javax.swing.JOptionPane;
public class L5_PenjumlahanMatriks {
//main method
public static void main(String[]args) {
//meminta input matriks 2D
int[][]A = inputmatriks(3,4);
int[][]B = inputmatriks(3,4);
int[][]C = jumlahmatriks(A,B);
//mencetak matriks dat
System.out.println("\nMatriks A: ");
cetakmatriks(A);
System.out.println("\nMatriks B: ");
cetakmatriks(B);
Output
4. Buat Program untuk mengalikan suatu matrix integer berukuran 3 baris 2 kolom dengan
suatu konstanta -7. Misal [M]*(-7)=[N].
Program
//Perogram Perkalian Matriks dengan Konstanta
import javax.swing.JOptionPane;
public class L5_KaliKonstanta {
//main method
public static void main(String[]args) {
//meminta input matriks 2D
int[][]M = inputmatriks(3,2);
int B = -7;
int[][]N = kalimatriks (M, B);
//mencetak matriks dat
System.out.println("\nMatriks M: ");
cetakmatriks(M);
System.out.println("Matriks A=");
int [][] dat = inputMatriks(3,3);
cetakMatriks(dat);
}
}
Output
7. Buat Program untuk memasukkan 6 nama kota di Jawa Barat yang dimasukkan melalui
keyboard, urutkan berdasarkan abjad secara ascending order.
Program
import java.io.*;
public class L5_1 {
public static void main(String args[]){
String[] kota_jabar = new String[6];
String[] asc = new String[6];
String d1 = "";
String d2 = "";
String tmp = "";
BufferedReader keybd = new BufferedReader(new
InputStreamReader(System.in));
// proses input data kota_jabar
// dimasukkan oleh user secara acak
try{
System.out.println("Masukkan nama kota di Jawa Barat: ");
for(int i=0;i < kota_jabar.length; i++){
System.out.print((i+1 + ". "));
kota_jabar[i] = keybd.readLine();
}
}catch(IOException IOerr){
System.out.print("Teradi kesalahan: " + IOerr);
}
/* === ASCENDING ORDER ===*/
for(int i = 0;i < kota_jabar.length;i++){
//int j = i + 1;
//d1 = kota_jabar[i];
for(int j = (i + 1);j < kota_jabar.length; j++){
d1 = kota_jabar[i];
d2 = kota_jabar[j];
if(d2.compareTo(d1) < d1.compareTo(d2)){
// d2 < d1
tmp = d1;
//d1 = d2;
//kota_jabar[i] = d1;
kota_jabar[i] = d2;
kota_jabar[j] = tmp;
}
}
// salin data ke asc
asc[i] = kota_jabar[i];
}
// tampilkan data hasil sorting
System.out.println("\nBerikut adalah daftar nama kota
(diurutkan secara ascending): ");
for(int i = 0; i < kota_jabar.length; i++){
System.out.printf("%d . %s\n", (i+1), asc[i]);
}
System.out.println();
// tampilkan data hasil sorting
}
}
Output
8. Buat Program untuk menyimpan 10 nama Negara beserta nama ibukotanya, untuk
programnya ketika di-run maka ketika diinputkan Negaranya maka hasilnya adalah
Ibukota dari Negara Malaysia (pemisalan) adalah Kuala Lumpur.
Program
import java.io.*;
public class L5_2 {
public static void main(String args[]){
// inisialisasi data-data nama negara satu index dengan ibu kotanya
String[] negara = {"Indonesia", "Malaysia", "Singapura", "Japan",
"China", "Filipina", "Vietnam", "India", "Brunai Darusalam", "Thailand"};
String[] ibuKota = {"Jakarta", "Kuala Lumpur", "Singapura", "Tokyo",
"Beijing", "Manila", "Hanoi", "New Delhi", "Bandar Sri Begawan", "Bangkok"};
String input = "";
// tampilkan daftar data negara
System.out.println("Daftar Nama Negara:");
for(int i=0;i < negara.length; i++)
System.out.printf("%d. %s\n",(i+1),negara[i]);
BufferedReader keybd = new BufferedReader(new
InputStreamReader(System.in));
try{
System.out.print("Masukkan nama negara: ");
// baca input nama negara dari user
input = keybd.readLine();
for(int j=0;j < negara.length; j++){
// jika data match maka tampilkan ibu kota dan stop pencarian
if(negara[j].equalsIgnoreCase(input)){
System.out.printf("Ibukota negara %s adalah
%s.\n",negara[j],ibuKota[j]);
j = negara.length;
}
// jika sudah sampai pada elemen terakhir dan data tidak match maka
cetak ini
if(j == negara.length - 1 &&
!negara[j].equalsIgnoreCase(input)){
System.out.println("Negara tidak ada dalam daftar.");
}
}
}catch(IOException IOerr){
// jika pada proses pembacaan terjadi error, tampilkan:
System.out.println("Terjadi kesalahan: " + IOerr);
}
return ;
}
}
Output
9. Buat program untuk memasukan 10 nama karyawan di suatu perusahaan beserta dengan
usianya masing-masing. Sediakan menu untuk memilih proses sorting secara ascending
(apakah berdasarkan nama atau berdasarkan usia karyawan).
Nama Usia
ANI 27
ALI 24
DENI 20
MULYADI 21
AHMAD 28
SITI 30
DADANG 24
EMI 23
ELIA 27
ANANG 25
10. Sama sprt soal no 9. Ditambah honor
Honor Nama Usia
4 ANI 27
4,5 ALI 24
3 DENI 20
3,2 MULYADI 21
6 AHMAD 28
2 SITI 30
1,6 DADANG 24
7 EMI 23
5 ELIA 27
1,1 ANANG 25
Jawab untuk no. 9&10)
package P06.Karyawan;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class ListKaryawan {
private Karyawan[] listKaryawan;
this.getListElemen(j).getNama()) > 0;
} else if (sortBy == 1) {
compareStatus =
this.getListElemen(i).getUmur() >
this.getListElemen(j).getUmur();
} else if (sortBy == 2) {
compareStatus =
this.getListElemen(i).getGaji() >
this.getListElemen(j).getGaji();
} else {
// Error
}
if (compareStatus) {
temp = this.getListElemen(i);
this.listKaryawan[i] =
this.getListElemen(j);
this.listKaryawan[j] = temp;
}
}
}
}
int i = 0;
while (i < jumlahKaryawan) {
System.out.format("%3d | %15s | %3d | %2g |\n",
i+1,
listKaryawan[i].getNama(),
listKaryawan[i].getUmur(),
listKaryawan[i].getGaji() / 1000000);
i++;
}
}
String namaKrywn;
int umurKrywn;
double gajiKrywn;
int i = 0;
while (i < krywn.jumlahKaryawan) {
try {
System.out.println("[" + (i + 1) + "]
=============================");
System.out.print("Nama: ");
namaKrywn = input.readLine();
System.out.print("Umur: ");
umurKrywn = Integer.parseInt(input.readLine());
System.out.print("Gaji (jt): ");
gajiKrywn = Double.parseDouble(input.readLine())
* 1000000.0;
System.out.println("\nHasil input:");
// Output hasil dari input
krywn.printListInTable();
Input data:
Hasil input: