Buku Petunjuk Praktikum
Praktikum Pemrograman Berbasis Obyek
Oleh:
Ali Ridho Barakbah S.Kom., Ph.D.
Rizky Yuniar Hakkun S.Kom., M.T.
Tita Karlita, S.Kom., M.Kom.
Yuliana Setiowati, S.Kom., M.Kom.
Program Studi D3 Teknik Informatika
Departemen Teknik Informatika dan Komputer
Politeknik Elektronika Negeri Surabaya
Kata Pengantar
Puji syukur kami panjatkan kehadirat Tuhan Yang Maha Esa atas segala rahmat dan
karunia-Nya sehingga Buku Praktikum Pemrograman Berbasis Obyek dapat diwujudkan.
Buku Praktikum Pemrograman Berbasis Obyek ini dirasa sangat diperlukan untuk
diterbitkan sebagai pedomam bagi mahasiswa dan dosen yang berkaitan dengan kegiatan
belajar dan mengajar di Jurusan Teknik Informasi Politeknik Elektronika Negeri
Surabaya.
Buku Praktikum Pemrograman Berbasis Obyek ini berisi penjelasan konsep
pemrograman berbasis obyek disertai contoh penerapannya dengan menggunakan bahasa
Java. Materi yang diajarkan meliputi prinsip-prinsip pemrograman berorientasi obyek
seperti kelas, obyek, method, enkapsulasi, pewarisan, polimorfisme, serta topik tentang
penanganan kesalahan, tipe data koleksi, dan membuat antar muka grafis menggunakan
Java. Dengan modul-modul praktikum yang ada di buku ini diharapkan mahasiswa
mampu merancang dan mengimplementasikan permasalahan ke dalam konsep
pemrograman berbasis obyek dengan diberikan latihan-latihan dan tugas-tugas
pemrograman. Diakhir kuliah mahasiswa membuat tugas proyek akhir yang
dipresentasikan di kelas.
Akhirnya dengan ini kami mengharapkan Buku Praktikum ini dapat dijadikan
petunjuk dan dipergunakan dengan sebaik-baiknya. Dan tentu tidak lupa kami harapkan
kritik dan saran demi makin sempurnanya buku ini.
ii
Daftar Isi
Kata Pengantar
i
Daftar Isi
ii
Praktikum 1
Pengenalan Lingkungan Kerja Java
1
Praktikum 2
Dasar Pemrograman Java
7
Praktikum 3
Operator
15
Praktikum 4
Pengambilan Keputusan dan Perulangan
25
Praktikum 5
Array
35
Praktikum 6
String
44
Praktikum 7
Pengenalan Pemrograman Berbasis Obyek
53
Praktikum 8
Enkapsulasi
63
Praktikum 9
Mengelola Kelas
71
Praktikum 10
Inheritance 1
81
Praktikum 11
Inheritance 2
89
Praktikum 12
Overriding dan Overloading
96
Praktikum 13
Polimorfisme
105
Praktikum 14
Nested Class
113
Praktikum 15
Type Wrapper
122
Praktikum 16
Type Enum
134
Praktikum 17
Menangani Exception
145
Praktikum 18
Melempar Exeption dan Membuat Exception Sendiri
153
Praktikum 19
Java Collection Framework: Set dan List
164
Praktikum 20
Java Collection Framework: Map
177
Praktikum 21
Comparable
185
Praktikum 22
Comparator
197
Praktikum 23
Generics: Membuat Class Generic dan Generic pada Collection
211
Praktikum 24
Generics: Bounded Type Parameter dan WildCard
222
Praktikum 25
Input dan Output 1
237
Praktikum 26
Input dan Output 2
246
Praktikum 27
Antar Muka Grafis
257
Praktikum 28
Penanganan Event
267
Praktikum 29
GUI: Kalkulator Mini
279
Praktikum 30
Proyek 1
291
Praktikum 31
Proyek 2
292
P
PR
R
A
A
K
K
T
T
I
I
K
K
U
U
M
M
1
1
P
PE
E
N
N
G
G
E
E
N
N
A
A
L
L
A
A
N
N
LI
L
I
N
N
G
G
K
K
U
U
N
N
G
G
A
A
N
N
KE
K
E
R
R
J
J
A
A
J
J
A
A
V
V
A
A
A. TUJUAN PEMBELAJARAN
1. Mengenal dan mempersiapkan lingkungan kerja Java
2. Mampu menerapkan langkah-langkah dalam menginstall Java Development Kit
3. Membuat program sederhana dengan Java
4. Mengkompilasi dan menjalankan program Java
5. Menganalisa beberapa problem yang terjadi saat pemrograman dan memberikan
solusi
B. DASAR TEORI
Untuk bisa bekerja dengan Java, maka kita perlu melakukan instalasi Java
Development Kit (JDK) atau Java 2 Software Development Kit (J2SDK). Setelah proses
instalasi selesai, selanjutnya adalah melakukan penyetingan PATH dan CLASSPATH di
dalam sistem. Penyetingan PATH sangat berguna untuk memberitahu sistem dimana
kita meletakkan file-file utama Java (diantaranya java, javac, jdb, dan lain-lain).
Sedangkan penyetingan CLASSPATH sangat berguna untuk memberitahu sistem
dimana kita meletakkan file-file class yang akan kita libatkan dalam program kita.
Penyetingan CLASSPATH ini biasa melibatkan dua item, yaitu tanda . (titik) yang
menandakan direktori kerja dan tools.jar yang berisikan kumpulan file-file library
standar yang disediakan oleh Java.
2
C. TUGAS PENDAHULUAN
Buatlah makalah yang berisi tentang perkembangan teknologi Java dan uraikan
berbagai macam teknologi Java serta aplikasinya saat ini.
D. PERCOBAAN
Percobaan 1 : Instalasi JDK
Pilih dan tentukan file instalasi JDK sesuai dengan operating system yang dipakai oleh
komputer anda. Jalankan file instalasi JDK dan ikuti proses instalasi tahap demi tahap.
Pilihlah direktori penginstallan secara default (biasanya ini akan membuat direktori baru
atau c:\jdkxxx atau c:\j2sdkxxx dimana xxx adalah versi JDK yang di-install.
Percobaan 2 : Pengesetan PATH
Masuk ke system setting OS anda melalui control panel dan lakukan penambahan
PATH dengan cara sebagai berikut:
set PATH=%PATH%;%JAVA_HOME%\bin
Percobaan 3 : Pengesetan CLASSPATH
Masuk ke system setting OS anda melalui control panel dan lakukan penambahan atau
membuat baru CLASSPATH dengan cara sebagai berikut:
set CLASSPATH=.;%JAVA_HOME%\lib\tools.jar
Percobaan 4 : Menampilkan suatu tulisan ke layar
public class Hallo {
public static void main(String args[]) {
System.out.println("Hallo...");
}
}
Percobaan 5 : Melibatkan class lain dalam program
Buatlah class TestGreeting dan Greeting dalam dua file sumber berbeda.
E. LATIHAN
Latihan 1 : Menganalisa dan membenahi kesalahan pada program
Tulislah program berikut ini dan simpanlah dengan nama Test.java
public class TestGreeting {
public static void main (String[] args) {
Greeting hello = new Greeting();
hello.greet();
}
}
TestGreeting.java
public class Greeting {
public void greet() {
System.out.println("hi");
}
}
Greeting.java
public class Testing {
public static void main(String[] args) {
System.out.println("What's wrong with this program?");
}
}
Test.java
4
Lakukan kompilasi pada file tersebut dan amati hasilnya. Kenapa terjadi kegagalan pada
saat kompilasi?. Benahilah kesalahan diatas sehingga program tersebut dapat berjalan
dengan baik.
Latihan 2 : Menganalisa dan membenahi kesalahan pada program
Tulislah program dibawah ini dan simpanlah dengan nama tertentu sesuai pilihan anda.
Lakukan kompilasi pada file tersebut dan amati hasilnya. Kenapa terjadi kegagalan pada
saat kompilasi? Benahilah kesalahan diatas sehingga program tersebut dapat berjalan
dengan baik.
Latihan 3 : Menganalisa dan membenahi kesalahan pada program
Tulislah program berikut ini dan simpanlah.
public class Test {
public static void main(String[] args) {
System.out.println("What's wrong with this program?");
}
}
public class TestAnother {
public static void main(String[] args) {
System.out.println("What's wrong with this program?");
}
}
public class Test {
public static void main(String args) {
System.out.println("What's wrong with this program?");
}
Lakukan kompilasi pada program tersebut dan jalankan. Kenapa terjadi kesalahan pada
saat menjalankan program tersebut. Benahilah kesalahan diatas sehingga program
tersebut dapat berjalan dengan baik.
Latihan 4 : Menganalisa dan membenahi kesalahan pada program
Tulislah program berikut ini dan simpanlah.
Lakukan kompilasi pada program tersebut dan jalankan. Kenapa terjadi kesalahan pada
saat menjalankan program tersebut. Benahilah kesalahan diatas sehingga program
tersebut dapat berjalan dengan baik.
F. TUGAS
Tugas 1 : Menghitung luas dan keliling lingkaran
Buatlah program untuk menghitung luas dan keliling lingkaran. Untuk nilai PI gunakan
konstanta PI yang ada di java.lang.Math.PI
Rumus :
Tugas 2 : Mengkonversi suatu nilai dari Celcius ke Fahrenheit atau sebaliknya
Buatlah suatu program untuk mengkonversi suatu nilai dari Celcius ke Fahrenheit atau
sebaliknya.
Rumus :
public class Test {
public void main(String args[]) {
System.out.println("What's wrong with this program?");
}
}
Luas lingkaran = PI x jari-jari
2Keliling lingkaran = 2 x PI x jari-jari
6
Lampiran
Cara memasukkan input melalui JOptionPane.
LAPORAN RESMI
Kumpulkan hasil percobaan di atas, tambahkan dalam laporan resmi flow chart untuk
menghitung nilai rata-rata dari n bilangan yang diinputkan, hitung jumlah totalnya,
hitung maksimal dan minimal bilangan.
import javax.swing.JOptionPane;
public class InputPane {
public static void main(String args[]) {
int nilai;
String str = JOptionPane.showInputDialog("Masukkan nilai :");
nila i= Integer.parseInt(str);
System.out.println(nilai);
System.exit(0);
}
}
P
PR
R
A
A
K
K
T
T
I
I
K
K
U
U
M
M
2
2
D
D
A
A
S
S
A
A
R
R
PE
P
E
M
M
R
R
O
O
G
G
R
R
A
A
M
M
A
A
N
N
JA
J
A
V
V
A
A
A. TUJUAN PEMBELAJARAN
1. Mengetahui aturan penamaan identifier
2. Mengenal kata-kata kunci yang ada di Java
3. Mengetahui tipe-tipe dasar yang ada di Java
4. Mengetahui pemberian nilai default untuk masing-masing tipe dasar
5. Memahami bagaimana melakukan casting dan promotion
B. DASAR TEORI
Identifier adalah nama yang diberikan untuk variabel, class atau method.
Penamaan identifier tidak boleh mengandung spasi dan harus diawali dengan karakter
unicode, tanda $ (dollar) atau tanda _ (underscore). Penamaan identifier ini bersifat
case-sensitive dan tidak dibatasi panjang maksimum.
Java mempunyai 48 kata kunci, seperti if, int, void, dan lain-lain. Kata-kata
kunci tersebut tidak bisa dipakai sebagai identifier. Selain kata kunci, Java juga
mempunyai 3 kata literal, yaitu true, false dan null, yang juga tidak bisa dipakai untuk
penamaan identifier juga terdapat 2 reserved words yang tidak bisa digunakan sebagai
nama identifier yaitu const dan goto.
Java mempunyai 8 tipe dasar, yaitu boolean, char, byte, short, int, long, float,
dan double. Dari 8 tipe data dasar tersebut bisa dikelompokkan menjadi 4 kelompok
data yaitu, integral, floating point, character, dan logical. Yang termasuk dalam
kelompok data integral atau bilangan bulat adalah byte, short, int dan long. Nilai default
untuk kelompok data integral adalah int. Yang termasuk dalam kelompok data floating
point adalah float dan double dengan nilai default double. Sedang yang termasuk dalam
8
tipe data character adalah char yang direpresentasikan dengan Unicode leter. Dan
kelompok data yang terakhir adalah logical yaitu boolean dengan hanya dua buah nilai
saja yang diijinkan yaitu “true” dan “false”. Spesifikasi panjang bit dan range serta nilai
default untuk masing-masing tipe data bisa dilihat pada Tabel 2.1.
Casting diperlukan untuk mengkonversi dari suatu tipe ke tipe data yang lebih
kecil panjang bitnya. Sedangkan promotion terjadi pada saat mengkonversi dari suatu
tipe data ke tipe data yang lebih panjang bitnya.
Contoh :
int p = (int) 10L;
long i = 10;
Tabel 2.1 Spesifikasi panjang bit dan nilai default tipe data dasar
Tipe
Panjang bit
Range
Nilai Default
boolean
16
-
false
char
16
0 – 2
16-1
‘\u0000’
byte
8
-2
7– 2
7-1
0
short
16
-2
15– 2
15-1
0
int
32
-2
31– 2
31-1
0
long
64
-2
63– 2
63-1
0L
float
32
-
0.0F
double
64
-
0.0
C. TUGAS PENDAHULUAN
1. Buatlah uraian yang berisi tentang spesifikasi 8 tipe data dasar !
2. Apakah yang dimaksud dengan casting (narrowing conversion) ?
3. Apakah yang dimaksud dengan konversi (widening conversion) ?
D. PERCOBAAN
Percobaan 1 : Memberikan nilai ke suatu tipe data
public class Assign {
public static void main(String args[]) { boolean b = true;
System.out.println("Value b = " + b); char c = 'C'; System.out.println("Value c = " + c); byte bt = 10; System.out.println("Value bt = " + bt); short s = 20; System.out.println("Value s = " + s); int i = 30; System.out.println("Value i = " + i); long l = 40L; System.out.println("Value l = " + l); float f = 3.14F; System.out.println("Value f = " + f); double d = 3.14; System.out.println("Value d = " + d); } }
Percobaan 2 : Mencetak nilai default dari tipe dasar
public class DefaultValue { static boolean b; static char c; static byte bt; static short s; static int i; static long l; static float f; static double d;
10
System.out.println("Default value b = " + b); System.out.println("Default value c = " + c); System.out.println("Default value bt = " + bt); System.out.println("Default value s = " + s); System.out.println("Default value i = " + i); System.out.println("Default value l = " + l); System.out.println("Default value f = " + f); System.out.println("Default value d = " + d); }
}
Percobaan 3 : Mengamati hasil perubahan nilai dari suatu operasi matematis
public class Divide {
public static void main(String[] arguments) { float number1 = 15;
float number2 = 6;
float result = number1 / number2; float remainder = number1 % number2;
System.out.println(number1 + " divided by " + number2); System.out.println("\nResult\tRemainder");
System.out.println(result + "\t" + remainder); }
}
Percobaan 4 : Mengamati hasil perubahan nilai dari suatu operasi matematis
class Invest {
public static void main(String[] arguments) { float total = 14000;
System.out.println("Original investment: $" + total);
// Increases by 40 percent the first year total = total + (total * .4F);
System.out.println("After one year: $" + total);
total = total - 1500F;
System.out.println("After two years: $" + total);
// Increases by 12 percent the third year total = total + (total * .12F);
System.out.println("After three years: $" + total); }
}
Percobaan 5 : Menampilkan bilangan oktal ke format desimal
public class Octal {
public static void main(String args[]) { int six=06;
int seven=07; int eight=010; int nine=011;
System.out.println("Octal six = " + six); System.out.println("Octal seven = " + seven); System.out.println("Octal eight = " + eight); System.out.println("Octal nine = " + nine); }
}
Percobaan 6 : Menampilkan bilangan heksadesimal ke format desimal
public class Hexadecimal {
public static void main(String args[]) { int x=0x0001; int y=0x7fffffff; int z=0xDeadCafe; System.out.println("x = " + x); System.out.println("y = " + y); System.out.println("z = " + z);
12
} }
Percobaan 7 : Mengamati perubahan nilai pada suatu tipe
public class Plus {
public static void main(String args[]) { int x; int y; x=2147483647; //(2^31)-1 System.out.println("x = " + x); y=x+1; System.out.println("y = " + y); } }
Percobaan 8 : Memahami pemakaian Unicode
public class CobaUnicode {
public static void main(String args[]) { ch\u0061r a='a'; char \u0062 = 'b'; char c= '\u0063'; String kata="\u0061\u0062\u0063"; System.out.println("a: " + a); System.out.println("a: " + b); System.out.println("a: " + c); System.out.println("kata: " + kata); } }
E. LATIHAN
Latihan 1 : Membuat formulasi proses casting dari tipe-tipe primitif
Lakukan percobaan casting antar tipe-tipe primitif. Lalu amati dan catatlah konversi dari
suatu tipe ke tipe lainnya yang memerlukan suatu casting. Dari hasil analisa anda,
buatlah suatu skema casting diantara tipe-tipe primitif.
Latihan 2 : Membuat formulasi proses promotion dari tipe-tipe primitif
Lakukan percobaan promotion antar tipe-tipe primitif. Lalu amati dan catatlah konversi
dari suatu tipe ke tipe lainnya yang menyebabkan terjadinya suatu promotion. Dari hasil
analisa anda, buatlah suatu skema promotion diantara tipe-tipe primitif.
F. TUGAS
Tugas 1 : Menganalisa batasan maksimum dari suatu tipe
Amatilah dan tulislah program berikut ini:
public class BigInteger {
public static void main(String args[]) { long p=2147483648;
} }
Lakukan kompilasi pada file tersebut dan amati pesan kesalahannya. Lakukan analisa
mengapa bisa terjadi kesalahan padahal batasan nilai maksimum dari suatu bilangan
bertipe long adalah 2
63-1 (9223372036854775807)?. Kemudian berikanlah solusi yang
tepat untuk mengatasi persoalan diatas.
Tugas 2 : Mencari panjang menit dari durasi waktu
Input: jam awal, menit awal, jam akhir, menit akhir
Output: durasi waktu (dalam menit) antara jam awal menit awal dengan jam akhir menit
akhir.
14
LAPORAN RESMI
Kumpulkan hasil percobaan di atas dan tambahkan analisa untuk tiap percobaan,
latihan, dan tugas yang telah dibuat.
P
PR
R
A
A
K
K
T
T
I
I
K
K
U
U
M
M
3
3
O
OP
P
E
E
R
R
A
A
T
T
O
O
R
R
A. TUJUAN PEMBELAJARAN
1.
Mengenal berbagai macam bentuk operator
2.
Memahami penggunaan berbagai macam jenis operator yang ada di Java
B. DASAR TEORI
Operator dapat diklasifikasikan menjadi 2 bentuk, yaitu unary operator dan
binary operator. Unary operator adalah operator yang hanya melibatkan 1 operan.
Sedangkan binary operator adalah operator yang melibatkan 2 operan. Java mempunyai
berbagai macam jenis operator yang dapat digolongkan menjadi operator aritmatika,
increment-decrement, bitwise, boolean, logik, shift (geser), penugasan, kombinasi dan
kondisi.
Arithmatic operator (operator aritmatika) adalah operator yang berfungsi untuk
operasi aritmatika. Yang termasuk dalam arithmatic operator bisa dilihat pada Tabel 3.1.
Tabel 3.1. Arithmatic operator
Arithmatic Operator
Keterangan
+
Operasi penambahan
-
Operasi pengurangan
*
Operasi perkalian
/
Operasi pembagian
%
Operasi modulus
Increment – decrement operator adalah operator yang berguna untuk menaikkan
1 nilai (increment) dan menurunkan 1 nilai (decrement). Yang termasuk
increment-17
decrement operator bisa dilihat pada Tabel 3.2. Berdasarkan urutan eksekusi penaikkan
dan penurunan nilainya, increment-decrement operator ini dapat diklasifikasikan
menjadi 2 macam, yaitu pre-increment/decrement dan post-increment/decrement.
Tabel 3.2. Arithmatic operator
Increment-Decrement Operator
Keterangan
++
increment
--
decrement
Bitwise operator adalah operator yang dipakai untuk operasi bit pada nilai
operan. Yang termasuk bitwise operator bisa dilihat pada Tabel 3.3.
Tabel 3.3. Bitwise Operator
Bitwise Operator
Keterangan
~
Operasi complement
&
Operasi AND
|
Operasi OR
^
Operasi XOR
Boolean operator (operator boolean) adalah operator yang mengharuskan
operannya bertipe boolean (true atau false). Yang termasuk boolean operator bisa dilihat
pada Tabel 3.4.
Tabel 3.4. Boolean Operator
Logical Operator
Keterangan
!
Operasi negasi (NOT)
&
Operasi AND
|
Operasi OR
^
Operasi XOR
||
Operasi OR (short circuit)
Operator !, &, | dan ^ mempunyai implementasi yang sama sebagaimana ketika
ia menjadi bitwise operator. Hanya saja di logical operator, operan yang dilibatkan
disini harus bertipe boolean, yang hanya mempunyai nilai true atau false.
Logical operator (operator logika) adalah operator yang sering dipakai untuk
operasi perbandingan dan selalu menghasilkan suatu nilai bertipe boolean (true atau
false). Yang termasuk logical operator bisa dilihat pada Tabel 3.5.
Tabel 3.5. Logical Operator
Logical Operator
Keterangan
= =
Operasi perbandingan sama dengan
!=
Operasi perbandingan tidak sama dengan
>
Operasi perbandingan lebih besar
>=
Operasi perbandingan lebih besar sama dengan
<
Operasi perbandingan lebih kecil
<=
Operasi perbandingan lebih kecil sama dengan
Shift operator (operator geser) adalah operator yang berfungsi untuk menggeser
susunan bit pada suatu nilai. Yang termasuk dalam shift operator dapat dilihat pada
Tabel 3.6.
Tabel 3.6. Shift Operator
Shift Operator
Keterangan
>>
right shift
>>>
unsigned right shift
<<
left shift
Combination operator (operator kombinasi) adalah operator yang terdiri dari
gabungan 2 operator. Biasanya combination operator ini dipakai untuk mempersingkat
waktu penulisan program. Yang termasuk operator combination bisa dilihat pada Tabel
19
3.7.
Tabel 3.7. Combination Operator
Combination Operator
Keterangan
+=
Gabungan dari operator = dan +
-=
Gabungan dari operator = dan -
*=
Gabungan dari operator = dan *
/=
Gabungan dari operator = dan /
%=
Gabungan dari operator = dan %
>>=
Gabungan dari operator = dan >>
>>>=
Gabungan dari operator = dan >>>
<<=
Gabungan dari operator = dan <<
&=
Gabungan dari operator = dan &
|=
Gabungan dari operator = dan |
^=
Gabungan dari operator = dan ^
Conditional operator (operator konditional) adalah operator yang dipakai untuk
operasi kondisi (persyaratan), sama sebagaimana if-then-else dan hanya berlaku untuk
pernyataan tunggal. Operator ini mengembalikan suatu nilai yang benar sesuai dengan
kondisi yang diberikan. Conditional operator (operator konditional) ini hanya ada 1
macam, yaitu ? disertai dengan tanda : (titik dua). Jika kondisi persyaratan yang terletak
di sebelah kiri tanda ? bernilai benar, maka pernyataan yang berada di sebelah kiri tanda
: yang akan diambil. Demikian juga sebaliknya, jika kondisi persyaratan bernilai salah,
maka pernyataan yang berada di sebelah kanan tanda : yang akan diambil.
C. TUGAS PENDAHULUAN
Buatlah makalah yang berisi tentang berbagai macam operator dengan disertai contoh
penggunaan dan outputnya.
D. PERCOBAAN
Percobaan 1 : Melakukan increment dan decrement nilai
class IncDec {
public static void main (String args[]) { int x = 8, y = 13; System.out.println("x = " + x); System.out.println("y = " + y); System.out.println("x = " + ++x); System.out.println("y = " + y++); System.out.println("x = " + x--); System.out.println("y = " + --y); } }
Percobaan 2 : Melakukan operasi bit
class Bitwise {
public static void main (String args[]) { int x = 5, y = 6;
System.out.println("x = " + x); System.out.println("y = " + y);
System.out.println("x & y = " + (x & y)); System.out.println("x | y = " + (x | y)); System.out.println("x ^ y = " + (x ^ y)); }
}
Percobaan 3 : Melakukan operasi komplemen
class BitwiseComplement {
public static void main (String args[]) { int x = 8; System.out.println("x = " + x); int y = ~x; System.out.println("y = " + y); } }
21
Percobaan 4 : Melakukan operasi shift
class Shift {
public static void main (String args[]) { int x = 7; System.out.println("x = " + x); System.out.println("x >> 2 = " + (x >> 2)); System.out.println("x << 1 = " + (x << 1)); System.out.println("x >>> 1 = " + (x >>> 1)); } }
Percobaan 5 : Menggunakan logical operator
class LogicalOperator {
public static void main (String args[]) { int x = 7, y = 11, z = 11; System.out.println("x = " + x); System.out.println("y = " + y); System.out.println("z = " + z); System.out.println("x < y = " + (x < y)); System.out.println("x > z = " + (x > z)); System.out.println("y <= z = " + (y <= z)); System.out.println("x >= y = " + (x >= y)); System.out.println("y == z = " + (y == z)); System.out.println("x != y = " + (x != z)); } }
Percobaan 6 : Menggunakan operator boolean and
public class BooleanAnd {
public static void main(String args[]) { int a=5, b=7;
if ((a<2) & (b++<10)) b+=2; System.out.println(b); }
Percobaan 7 : Menggunakan operator boolean and short-circuit
public class ShortCircuitBooleanAnd {
public static void main(String args[]) { int a=5, b=7;
if ((a<2) && (b++<10)) b+=2; System.out.println(b);
} }
Percobaan 8 : Menggunakan boolean or
public class BooleanOr {
public static void main(String args[]) { int a=5, b=7;
if ((a>2) | (b++<10)) b+=2; System.out.println(b); }
}
Percobaan 9 : Menggunakan boolean or short-circuit
public class ShortCircuitBooleanOr {
public static void main(String args[]) { int a=5, b=7;
if ((a>2) || (b++<10)) b+=2; System.out.println(b);
} }
Percobaan 10 : Menggunakan operator kondisi
class Conditional {
public static void main (String args[]) { int x = 0;
boolean isEven = false;
System.out.println("x = " + x); x = isEven ? 4 : 7;
System.out.println("x = " + x); }
23
E. LATIHAN
Latihan 1 : Menampilkan representasi biner dari bilangan desimal bertipe int
Buatlah suatu program untuk menampilkan susunan bit dari suatu bilangan desimal.
Nilai bilangan input yang dimasukkan adalah bertipe int.
Contoh tampilan:
Masukkan nilai desimal: 13
Susunan bit dari 13 adalah 00000000000000000000000000001101
Masukkan nilai desimal: 612
Susunan bit dari 13 adalah 00000000000000000000001001100100
Masukkan nilai desimal: -1
Susunan bit dari 13 adalah 11111111111111111111111111111111
Masukkan nilai desimal: -13
Susunan bit dari 13 adalah 11111111111111111111111111110011
Latihan 2 : Menampilkan representasi biner dari bilangan desimal bertipe byte
Buatlah suatu program seperti diatas untuk menampilkan susunan bit dari suatu
bilangan desimal, akan tetapi nilai bilangan input yang dimasukkan adalah bertipe byte.
F. TUGAS
Tugas 1 : Mencari representasi biner dari suatu bilangan
Tuliskan representasi bit dari nilai –19? Jelaskan.
Jelaskan apa yang terjadi pada potongan program berikut ini:
byte a=-1;
a=(byte) (a >>> 2);
LAPORAN RESMI
Kumpulkan hasil percobaan di atas dan tambahkan analisa untuk tiap percobaan,
latihan, dan tugas yang telah dibuat.
25
P
PR
R
A
A
K
K
T
T
I
I
K
K
U
U
M
M
4
4
P
PE
E
R
R
C
C
A
A
B
B
A
A
N
N
G
G
A
A
N
N
D
D
A
A
N
N
PE
P
E
R
R
U
U
L
L
A
A
N
N
G
G
A
A
N
N
A. TUJUAN PEMBELAJARAN
1. Memahami logika percabangan
2. Memahami logika perulangan
3. Memakai percabangan dan perulangan yang tepat
4. Memahami pemberian kondisi untuk perulangan
B. DASAR TEORI
Percabangan di dalam Java terdapat 2 macam, yaitu dengan memakai if dan
switch. Percabangan if dipakai jika kita menginginkan suatu pernyataan itu dilakukan
dengan syarat tertentu yang bernilai benar. Sintaks dari if adalah sebagai berikut:
if (ekspresi_boolean) {
Pernyataan1;
}
Pernyataan1 akan dikerjakan kalau ekspresi_boolean bernilai true. Percabangan if-else
dipakai untuk mengeksekusi salah satu dari 2 pernyataan dari syarat tertentu yang pada
pada if yang dapat bernilai benar atau salah. Sintaks dari if-else adalah sebagai berikut:
if (ekspresi_boolean) {
Pernyataan1;
} else {
Pernyataan2;
}
Pernyataan1 akan dikerjakan
kalau ekspresi_boolean bernilai true. Kalau
ekspresi_boolean bernilai false, maka Pernyataan2 akan dikerjakan. Percabangan else-if
dipakai untuk memberikan kondisi tertentu pada bagian else. Sintaks dari else-if adalah
sebagai berikut:
if (ekspresi_boolean1) {
Pernyataan1;
} else if (ekspresi_boolean2) {
Pernyataan2;
}
Ketika ekspresi_boolean bernilai false, maka alur program akan menuju ke bagian else.
Selanjutnya Pernyataan2 diatas akan dikerjakan kalau ekspresi_boolean2 bernilai true.
Percabangan switch dipakai pada saat kita ingin memberikan kondisi denga
beberapa syarat yang identik yang masing-masing mempunyai pernyataan yang
berbeda-beda. Pada Java, nilai yang dilewatkan pada switch harus bertipe int, short,
byte atau char. Sintaks dari switch adalah sebagai berikut:
switch (ekspresi) {
case nilai1: Pernyataan1;
break;
case nilai2: Pernyataan2;
break;
default: Pernyataan3;
}
Ketika ekspresi bernilai nilai1, maka alur program akan mengeksekusi Pernyataan1.
Selanjutnya break menyebabkan alur program keluar dari daerah switch. Kalau ekspresi
bernilai nilai2, maka alur program akan mengeksekusi Pernyataan2. Apabila ekspresi
mempunyai nilai yang tidak sama dengan nilai1 dan nilai2, maka alur program akan
27
diperbolehkan untuk ekspresi adalah byte, short, int dan char saja. Tetapi untuk Java
diatas versi 7 ditambahkan tipe data String.
Perulangan di dalam Java terdapat 3 macam, yaitu for, while dan do-while.
Perulangan for dipakai pada saat kita melakukan perulangan dengan jumlah yang sudah
diketahui pasti. Sintaks dari for adalah sebagai berikut:
for (inisialisasi; kondisi; perubah) {
Pernyataan;
}
Perulangan while dipakai pada saat kita melakukan perulangan dengan jumlah
yang belum diketahui pasti. Pernyataan pada while akan dikerjakan setelah pengecekan
kondisi pada while bernilai true. Sintaks dari while adalah sebagai berikut:
while (kondisi) {
Pernyataan;
}
Perulangan do-while dipakai pada saat kita melakukan perulangan dengan
jumlah yang belum diketahui pasti. Pernyataan pada do akan dikerjakan terlebih dahulu,
baru setelah itu dilakukan pengecekan kondisi pada while. Sintaks dari do-while adalah
sebagai berikut:
do {
Pernyataan;
} while (kondisi);
Kita dapat memberikan kondisi tertentu pada saat terjadi perulangan. Kondisi
yang mungkin terjadi pada perulangan terdapat 2 macam, yaitu break dan continue.
Break menyebabkan suatu kondisi untuk keluar dari perulangan. Sedangkan continue
memyebabkan suatu kondisi untuk melanjutkan ke tahapan selanjutnya pada
perulangan.
C. TUGAS PENDAHULUAN
1. Sebutkan dan jelaskan berbagai macam sintaks percabangan yang digunakan di Java!
2. Sebutkan dan jelaskan berbagai macam sintaks perulangan yang digunakan di Java!
D. PERCOBAAN
Percobaan 1 : Percabangan menggunakan if, if-else dan else-if
class IfElseName {
public static void main (String args[]) { char firstInitial = 'a';
System.out.println("Masukkan huruf awal nama anda: "); try { firstInitial = (char)System.in.read(); } catch (Exception e) { System.out.println("Error: " + e.toString()); } if (firstInitial == 'a')
System.out.println("Nama anda pasti Asep!"); else if (firstInitial == 'b')
System.out.println("Nama anda pasti Brodin!"); else if (firstInitial == 'c')
System.out.println("Nama anda pasti Cecep!"); else
System.out.println("Nama anda tidak terkenal!"); }
}
Percobaan 2 : Percabangan menggunakan switch
class SwitchName {
public static void main (String args[]) { char firstInitial = 'a';
System.out.println("Masukkan huruf awal nama anda:"); try {
29 System.out.println("Error: " + e.toString()); } switch (firstInitial) { case 'a':
System.out.println("Nama anda pasti Asep!"); case 'b':
System.out.println("Nama anda pasti Brodin!"); case 'c':
System.out.println("Nama anda pasti Cecep!"); default:
System.out.println("Nama anda tidak terkenal!"); }
} }
Percobaan 3 : Percabangan menggunakan switch dengan break
class SwitchNameBreak {
public static void main (String args[]) { char firstInitial = 'a';
System.out.println("Masukkan huruf awal nama anda:"); try { firstInitial = (char)System.in.read(); } catch (Exception e) { System.out.println("Error: " + e.toString()); } switch (firstInitial) { case 'a':
System.out.println("Nama anda pasti Asep!"); break;
case 'b':
System.out.println("Nama anda pasti Brodin!"); break;
case 'c':
System.out.println("Nama anda pasti Cecep!"); break;
default:
System.out.println("Nama anda tidak terkenal!"); }
} }
Percobaan 4 : Perulangan menggunakan for
class ForCount {
public static void main (String args[]) { int count=1;
for (int i=0; i<9; i++) { for (int j=0; j<i+1; j++) { System.out.print(count); } count++; System.out.println(); } } }
Percobaan 5 : Perulangan menggunakan while
class WhileCoun t {
public static void main (String args[]) { int count=1; int i=0; while (i<9) { int j=0; while (j<i+1) { System.out.print(count); j++; } count++; System.out.println(); i++;
31
} } }
Percobaan 6 : Perulangan dengan break
class BreakLoop {
public static void main (String args[]) { int i = 0; do { System.out.println("Iterasi ke " + i); i++; if (i > 10) break; } while (true); } }
Percobaan 7 : Perulangan dengan continue
public class ContinueLoop {
public static void main(String args[]) { int a, b; for(a=0;a<2;a++) for(b=0;b<3;b++) { if (b==1) continue; System.out.println("a=" + a + " ; b=" + b); } } }
Percobaan 8 : Pemakaian label pada kondisi break
public class BreakLabel {
public static void main(String args[]) { int a, b;
Mulai: for(a=0;a<2;a++) for(b=0;b<3;b++) { if (b==1) break Mulai; System.out.println("a=" + a + " ; b=" + b); } } }
Percobaan 9 : Pemakaian label pada kondisi continue
public class ContinueLabel {
public static void main(String args[]) { int a, b; Mulai: for(a=0;a<2;a++) for(b=0;b<3;b++) { if (b==1) continue Mulai; System.out.println("a=" + a + " ; b=" + b); } } }
E. LATIHAN
Latihan 1 : Pengecekan kelompok karakter
Buatlah program untuk menentukan kelompok suatu karakter yang dimasukkan melalui
keyboard. Kelompok karakter tersebut adalah huruf kecil, huruf besar, angka, dan
karakter khusus (tanda baca, operator dan sebagainya).
Latihan 2 : Menampilkan bilangan faktorial
Bilangan bulat faktorial n, ditulis dengan n! adalah dihasilkan dari mengalikan dari 1
sampai dengan n. Contohnya 5! = 1 x 2 x 3 x 4 x 5 =120. Buatlah program untuk
menampilkan tabel hasil faktorial dari suatu bilangan yang diinputkan (tampilan
bilangan rata kanan)
33
Contoh tampilan :
Masukkan bilangan faktorial: 7
n
n!
---
1
1
2
2
3
6
4
24
5
120
6
720
7
5040
---
Latihan 3 : Deret Fibonacci
Buatlah program untuk menampilkan deret Fibonacci
Contoh tampilan :
Masukkan berapa deret Fibonacci? 8 8 deret Fibonacci = 1 1 2 3 5 8 13 21
Latihan 4 : Menampilkan deret bilangan genap
Buatlah program untuk menampilkan deret bilangan genap dari 2 sampai dengan 20
kecuali kelipatan 6.
Contoh tampilan :
2 4 8 10 14 16 20F. TUGAS
Tugas 1 : Menghitung nilai determinan dan mencari akar persamaan kuadrat
Buatlah program untuk menghitung determinan dan mencari akar-akar dari persamaan
kuadrat : ax
2+ bx + c = 0 , dengan ketentuan sebagai berikut :
D = b
2• Jika D = 0 , maka terdapat 2 akar real yang kembar, yaitu : x1 = x2 = -b / 2a
- 4ac
• Jika D > 0 , maka terdapat 2 akar real yang berlainan, yaitu :
x1 = (-b + √D) / 2a
x2 = (-b - √D) / 2a
• Jika D < 0 , maka terdapat 2 akar imaginer yang berlainan, yaitu :
x1 = -b / 2a + (√D / 2a) i
x2 = -b / 2a - (√D / 2a) i
Input : a, b, c (int)
Output : Nilai Determinan serta nilai akar-akar persamaan tsb (x1 dan x2).
Petunjuk
Tugas 2 : Menentukan tahun kabisat
Buatlah program untuk menentukan suatu tahun kabisat atau bukan dimana tahun
dibatasi mulai dari tahun 1900 sampai dengan tahun 2005.
Contoh tampilan:
Masukkan tahun (1900-2005) : 1923
1923 bukan tahun kabisat
Masukkan tahun (1900-2005) : 1898
Maaf, tahun input dibawah 1900
Masukkan tahun (1900-2005) : 1996
1996 adalah tahun kabisat
Masukkan tahun (1900-2005) : 2008
Maaf, tahun input diatas 2005
: Gunakan Math.pow(x,0.5) untuk mencari akar dari x.
LAPORAN RESMI
Kumpulkan hasil percobaan di atas dan tambahkan analisa untuk tiap percobaan,
latihan, dan tugas yang telah dibuat.
35
P
PR
R
A
A
K
K
T
T
I
I
K
K
U
U
M
M
5
5
A
A
R
R
R
R
A
A
Y
Y
A. TUJUAN PEMBELAJARAN
1. Membuat dan menggunakan array
2. Berinteraksi dengan array multi dimensi
3. Mengkopi elemen array
4. Memahami konsep referensi array
B. DASAR TEORI
Array adalah suatu kumpulan data pada suatu variabel. Cara mendeklarasikan suatu
array adalah sebagai berikut :
tipe_array nama_array[];
tipe_array[] nama_array;
Contoh : int nilai[];
char[] huruf;
Agar kita dapat memesan tempat di memori untuk menampung elemen-elemen
array, kita perlu membuat array. Adapun caranya adalah dengan memakai new karena di
dalam Java suatu array adalah dianggap suatu obyek. Format penulisannya adalah
sebagai berikut :
nama_array = new tipe_array[total_elemen_array];
Contoh :
int nilai[];
nilai = new int[5];
Untuk dapat mengakses elemen array dapat dilakukan dengan menyebutkan
elemen ke berapa dari array yang akan diakses, seperti berikut ini:
Kita juga dapat melakukan deklarasi dan pembuatan array hanya pada satu baris
statement. Adapun format penulisannya adalah sebagai berikut :
tipe_array nama_array[] = new tipe_array[total_elemen_array];
Contoh :
int nilai[] = new int[5];
Inisialisasi array dapat dilakukan dengan format penulisan sebagai berikut:
tipe_array nama_array[] = {nilai_indeks_0, nilai_indeks_1, … , nilai_indeks_n};
Contoh : int nilai[] = {70, 65, 85};
Kita dapat membuat array multi dimensi dengan cara menambahkan tanda []
sebanyak dimensi yang ingin dibuat. Sebagai contoh adalah sebagai berikut:
int x[][] = new int[3][4];
Baris statement diatas berarti kita ingin membuat array berdimensi 2, dengan 3 elemen
di dimensi ke-1 dan 4 elemen di dimensi ke-2. Untuk mengetahui panjang dari suatu
array yang telah kita buat, kita dapat memakai properti length. Adapun format untuk
menggunakan length adalah 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][j].length total elemen array pada dimensi 3 untuk indeks ke-i
pada dimensi 1 dan indeks ke-j pada dimensi 2
dan seterusnya.
Isi dari suatu array dapat kita kopi pada array yang lain dengan memanfaatkan
method arraycopy() pada class System. Format penulisannya sebagai berikut :
System.arraycopy(array1, p1, array2, p2, n);
dimana : array1 = array asal/sumber pengkopian
array2 = array tujuan pengkopian
p1 = posisi indeks awal pengkopian pada array asal
p2 = posisi indeks awal pengkopian pada array tujuan
37
Suatu array juga dapat me-refer (merujuk) ke array yang lain, dengan kata lain
merujuk pada alamat memori yang sama. Sebagai contoh adalah program berikut ini :
int nilai[] = {10, 20, 30};
int result[];
result = nilai;
Di baris ketiga, kita meng-assign array nilai ke array result. Akibatnya, array
result akan me-refer (merujuk) pada array nilai, sehingga kedua array tersebut merujuk
alamat memori yang sama.
C. TUGAS PENDAHULUAN
1. Apakah yang dimaksud dengan array?
2. Buatlah contoh mendeklarasikan, memberi nilai dan mengakses elemen array!
3. Bagaimana cara mengetahui panjang array?
4. Uraikan pengetahuan anda mengenai array multidimensi!
5. Bagaimana cara mengkopi isi array?
6. Apakah yang dimaksud dengan referensi array. Beri contoh!
D. PERCOBAAN
Percobaan 1 : Mengakses elemen array
public class Array1 {
public static void main(String args[]) { int nilai[]=new int[3];
nilai[0]=70; nilai[1]=80; nilai[2]=65;
for(int i=0; i<nilai.length; i++) ratarata+=nilai[i]; ratarata/=nilai.length;
System.out.println("Nilai rata-rata = " + ratarata); }
}
Percobaan 2 : Mengakses elemen array berdimensi 2
import java.text.NumberFormat;
public class Array2 {
public static void main(String args[]) {
NumberFormat nf=NumberFormat.getInstance(); nf.setMaximumFractionDigits(3);
int nilai[][]=new int[2][3]; nilai[0][0]=85; nilai[0][1]=81; nilai[0][2]=78; nilai[1][0]=65; nilai[1][1]=73; nilai[1][2]=71; String MK[]={"RPL", "PBO"};
double ratarataMK[]=new double[nilai.length];
for (int i=0; i<nilai.length; i++) {
for (int j=0; j<nilai[0].length; j++) { ratarataMK[i]+=nilai[i][j];
}
ratarataMK[i]/=nilai[0].length; }
System.out.println("Nilai Mata Kuliah\n");
System.out.println("MK \tMinggu1\tMinggu2\tMinggu3\tRata-Rata");
39
for (int i=0; i<nilai.length; i++) { System.out.print(MK[i] + "\t");
for (int j=0; j<nilai[0].length; j++) { System.out.print(nilai[i][j] + "\t"); } System.out.print(nf.format(ratarataMK[i])+"\n"); } } }
Percobaan 3 : Mendapatkan informasi panjang elemen array multi dimensi
public class CariPanjangElemen {
public static void main(String args[]) { int x[][][][]=new int[2][][][]; x[0]=new int[1][][]; x[0][0]=new int[2][]; x[0][0][0]=new int[3]; x[0][0][1]=new int[2]; x[1]=new int[2][][]; x[1][0]=new int[1][]; x[1][0][0]=new int[2]; x[1][1]=new int[2][]; x[1][1][0]=new int[1]; x[1][1][1]=new int[3]; System.out.println(x.length); System.out.println(x[0].length); System.out.println(x[0][0].length); System.out.println(x[0][0][0].length); System.out.println(x[0][0][1].length); System.out.println(); System.out.println(x[1].length); System.out.println(x[1][0].length); System.out.println(x[1][0][0].length); System.out.println(x[1][1].length);
System.out.println(x[1][1][0].length); System.out.println(x[1][1][1].length); }
}
Percobaan 4 : Menangkap daftar argumen
public class GetArguments {
public static void main(String args[]) {
System.out.println("Tanggal : " + args[0]); System.out.println("Bulan : " + args[1]); System.out.println("Tahun : " + args[2]); }
}
Percobaan 5 : Melakukan pengkopian array
public class CopyArray {
public static void main(String args[]) { int[] array1 = { 7, 4, 8, 1, 4, 1, 4 }; int[] array2 = new int[3];
System.arraycopy(array1,0,array2,0,3);
System.out.print("Array1 : "); for (int i=0; i<array1.length; i++) System.out.print(array1[i] + " "); System.out.println();
System.out.print("Array2 : "); for (int i=0; i<array2.length; i++) System.out.print(array2[i] + " "); }
41
E. LATIHAN
Latihan 1 : Mencari nilai rata-rata mata kuliah dari daftar nilai siswa
Diketahui daftar nilai siswa sebagai berikut:
NRP
Nama Mhs
RPL
BD
PBO
1
Ahmad
81
90
62
2
Adang
50
83
87
3
Dani
89
55
65
4
Edi
77
70
92
Buatlah program untuk menampilkan laporan sebagai berikut:
NRP Rata-rata
---
1
77.67
2
73.33
3
69.67
4
79.67
---
Latihan 2 : Menampilkan deret Fibonacci
Deret fibonanci adalah deret dimana dimulai dengan dua angka, dimana bernilai 0 dan
1, kemudian deret ketiga ditentukan dari penjumlahan kedua angka tersebut, sedangkan
deret keempat ditentukan dari dua angka sebelumnya begitu seterusnya. Sehingga
didapatkan deret fibonanci sebagai berikut: 0 1 1 2 3 5 8 13 21 dan seterusnya. Buatlah
program untuk menampilkan bilangan Fibonacci yang banyaknya sesuai dengan input.
Contoh tampilan:
Masukkan jumlah deretan Fibonacci? 8
0 1 1 2 3 5 8 13
Masukkan jumlah deretan Fibonacci? 10
0 1 1 2 3 5 8 13 21 34
Latihan 3 : Mendeteksi bilangan prima
Buatlah suatu program untuk mendeteksi suatu bilangan itu termasuk bilangan prima
atau bukan.
Contoh tampilan:
Masukkan bilangan? 8
8 bukan termasuk bilangan prima
Masukkan bilangan? 11
11 adalah bilangan prima
F. TUGAS
Tugas 1: Mencari posisi suatu angka di array
Misal terdapat array dua dimensi sebagai berikut:
int[][] arrayOfInts = { { 32, 87, 3, 589 }, { 12, 1076, 2000, 8 },
{ 622, 127, 77, 955 }};
Tugas : Carilah posisi angka 12 pada array tersebut. Silakan menggunakan looping,
branching, label, break, atau continue bila diperlukan.
Contoh output program: Found 12 at 1, 0
Tugas 2: Hitung jumlah huruf a yang terdapat pada array berikut ini !
char [ ] matKul =
43
Tugas 3. Mengakses elemen array
Di bawah ini adalah contoh program yang mengakses dan menampilkan elemen array
ke layar dengan menggunakan looping for.
class ForDemo {
public static void main(String[] args){
int x [] = {1,2,3,4,5,6,7,8,9,10};
for(int i=0; i<10; i++){
System.out.println("Count is: " + x[i]);
}
}
}
Temukan dan sebutkan cara lain dengan menggunakan loop for untuk mengakses dan
menampilkan elemen array!
LAPORAN RESMI
P
PR
R
A
A
K
K
T
T
I
I
K
K
U
U
M
M
6
6
S
S
T
T
R
R
I
I
N
N
G
G
A. TUJUAN PEMBELAJARAN
1. Memahami sifat dan cara menggunakan dan operasi String.
2. Memahami sifat dan cara menggunakan dan operasi StringBuffer
3. Memahami sifat dan cara menggunakan dan operasi StringBuilder
B. DASAR TEORI
Objek dari String sering sekali kita gunakan sehari-hari, bahkan mungkin di
setiap class dari Java kita terdapat rutin yang menangani String. Class
Stringmerepresentasikan suatu teks. Class String berisi string yang tetap (immutable string).
Artinya sekali intance
Stringdibuat maka isinya tidak bisa diubah. Kelas
Stringmemiliki 13 konstruktor yang memungkinkan kita membuat obyek
Stringdan
menginisialisasi nilainya dengan menggunakan berbagai macam sumber data yang
berbeda. Cara membuat obyek string adalah sebagai berikut:
String str = "abc";
Sama dengan
char data[] = {'a', 'b', 'c'}; String str = new String(data);
Berikut ini adalah beberapa contoh penggunaan String:
System.out.println("abc");String cde = "cde";
System.out.println("abc" + cde); String c = "abc".substring(2,3); String d = cde.substring(1, 2);
Class
Stringmemiliki method untuk menangani individual karakter dari suatu string,
membandingkan string, mencari string, mendapatkan substring, membuat kopi isi string
45
dan dijadikan lowercase atau uppercase. Java menyediakan operator spesial untuk
menggabungkan dua string yaitu operator plus (+).
Class
StringBuffermirip dengan String tetapi bersifat mutable, atau dapat
diubah atau dimodifikasi dengan menggunakan beberapa method yang dimilikinya.
String buffer aman digunakan oleh beberapa thread. Method-methodnya bersifat
synchronized sehingga beberapa operasi yang terjadi pada suatu obyek string buffer
akan diselesaikan secara serial sesuai urutan pemanggilan.
Operasi utama class
StringBufferadalah method append dan insert. Method
append
selalu menambahkan teks diakhir string, sedang method
insertmenembahkan
teks di posisi tertentu. Sebagai contoh:
StringBuffer sb1 = new StringBuffer(“start”);
sb1.append(“le”); maka isi sb1 adalah “startle”
StringBuffer sb2 = new StringBuffer(“start”);
sb2. insert(4,”le”); maka isi sb1 adalah “starlet”
Secara umum, jika
sbadalah obyek dari
StringBuffer, maka
sb.append(x)sama
dengan operasi
sb.insert(sb.length(),x). StringBuilderadalah string yang
bersifat mutable. Operasi yang dimiliki class
StringBuildermirip dengan class
StringBuffer
. Perbedaannya adalah StringBuilder tidak mendukung sinkronisasi.
C. TUGAS PENDAHULUAN
1. Apakah perbedaan class String, StringBuffer dan StringBuilder?
2. Apakah yang dimaksud dengan sifat mutable dan immutable? Beri contoh!
3. Jelaskan operasi utama append dan insert yang dimiliki oleh StringBuffer!
D. PERCOBAAN
Percobaan 1. Karakter escape
Di dalam String kita dapat memasukkan sekuen dari karakter escape yang terdiri dari
satu karakter back slash (\) diikuti oleh karakter escape tersebut.
Beberapa escape character yang sering digunakan adalah :
- \n untuk baris baru
- \t untuk tab
- \\ untuk karakter back slash (\) itu sendiri
Cobalah kode dibawah ini. Apakah outputnya?
Percobaan 2. Membandingkan String
Membandingkan String di java tidak bisa menggunakan operator equals (==) tetapi kita
harus menggunakan method dari String yaitu equals dan equalsIgnoreCase. Sesuai
dengan nama methodnya, equals digunakan untuk membandingkan objek String secara
case-sensitive (huruf kecil dan besar dibedakan) dan sebaliknya equalsIgnoreCase
digunakan untuk membandingkan String secara case-insensitive (huruf besar dan kecil
tidak dibedakan).
Cobalah kode dibawah ini. Apakah outputnya?
Percobaan 3. Menggabungkan String (Concatenation)
Untuk menggabungkan string kita bisa menggunakan beberapa cara yaitu dengan
menggunakan method concat maupun dengan operator + (plus) dan += (plus sama
dengan).
Cobalah kode dibawah ini. Apakah outputnya?
class Str1{public static void main(String [] args){ String str1 = "PENS"; String str2 = "pens"; System.out.println(str1 + "\n" + str2); } } class Str2{
public static void main(String [] args){ String str1 = "PENS"; String str2 = "pens"; System.out.println(str1.equals(str2)); System.out.println(str1.equalsIgnoreCase(str2); } }
47
Percobaan 4. Konversi Otomatis (Automatic Conversion)
Pada saat kita menggunakan concatenation (penggabungan) antara objek string dengan
suatu nilai atau variable yang bertipe primitive (int, char, float, dsbnya) maka secara
otomatis data primitif tersebut akan dikonversi menjadi string.
Cobalah kode dibawah ini. Apakah outputnya?
class Str3{
public static void main(String [] args){ String str1 = "Monas"; System.out.println(str1); String str2 = "monas"; System.out.println(str2); String str3 = str1 + str2; System.out.println(str3); String str4 = str1.concat(str2); System.out.println(str4); str1 += str2; System.out.println(str1); } } class Str4{
public static void main(String [] args){ int nilai = 100;
nilai = nilai * 2;
System.out.println("Angka " + 1 + " adalah angka perta ma bilangan bulat positif"); System.out.println("100 x 2 = " + nilai);
} }
Percobaan 5. Mengganti Nilai String Sederhana
Untuk mengganti nilai text dari String cukup menggunakan method replace dari String.
Cobalah kode dibawah ini. Apakah outputnya?
E. LATIHAN
Latihan 1. Apakah output program dibawah ini?
Latihan 2. Apa yang terjadi bila kode berikut ini dikompile dan dijalankan?
Jelaskan!
public class Conv{
public static void main(String argv[]){ Conv c = new Conv();
String s = new String("ello"); c.amethod(s);
}
public void amethod(String s){ char c = 'H'; c += s; System.out.println(c); } } class Str1{
public static void main(String [] args){ String s=new String("Bicycle"); int iBegin=1; char iEnd=3; System.out.println(s.substring(iBegin,iEnd)); } } class Str5{
public static void main(String [] args){ String nama = "Dora";
nama = nama.replace("Dor", "Ti"); System.out.println(nama);
} }
49
Latihan 3. Apa yang terjadi bila kode berikut ini dikompile dan dijalankan?
Jelaskan!
Latihan 4. Apa yang terjadi bila kode berikut ini dikompile dan dijalankan?
Jelaskan!
public class EqTest3{
public static void main(String argv[]){ EqTest e = new EqTest();
} EqTest(){ String s1 = "Java"; String s2 = "Java"; String s3 = "java"; if(s1 == s2)) { System.out.println("Equal"); }else{ System.out.println("Not equal"); } if(s1 == s3)) { System.out.println("Equal"); }else{ System.out.println("Not equal"); } } }
public class EqTest4{
public static void main(String argv[]){ EqTest e = new EqTest();
}
EqTest(){
String s1 = new String("Java"); String s2 = new String("Java");
String s3 = new String("java"); if(s1 == s2)) { System.out.println("Equal"); }else{ System.out.println("Not equal"); } if(s1 == s3)) { System.out.println("Equal"); }else{ System.out.println("Not equal"); } } }
Latihan 5. Apa yang terjadi bila kode berikut ini dikompile dan dijalankan?
Jelaskan!
Latihan 6. Apa yang terjadi bila kode berikut ini dikompile dan dijalankan?
Jelaskan!
Latihan 7. Apa yang terjadi bila kode berikut ini dikompile dan dijalankan?
Jelaskan!
public class EqTest5{
public static void main(String argv[]){ EqTest e = new EqTest();
} EqTest(){ String s = "Java"; String s2 = "java"; if(s.equalsIgnoreCase(s2)) { System.out.println("Equal"); }else{ System.out.println("Not equal"); } } }
public class EqTest6{
public static void main(String argv[]){ String str = "Java";
StringBuffer buffer = new StringBuffer(str);
if(str.equals(buffer)){
System.out.println("Both are equal"); }
else{
System.out.println("Both are not equal"); }
} }
public class Test {
public static void main(String args[]) { String str1="abc"; String str2="def"; String str3=str1.concat(str2); str1.concat(str2); System.out.println(str1); } }