• Tidak ada hasil yang ditemukan

Buku Petunjuk Praktikum. Praktikum Pemrograman Berbasis Obyek

N/A
N/A
Protected

Academic year: 2021

Membagikan "Buku Petunjuk Praktikum. Praktikum Pemrograman Berbasis Obyek"

Copied!
297
0
0

Teks penuh

(1)

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

(2)

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.

(3)

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

(4)

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.

(5)

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...");

}

}

(6)

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

(7)

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?");

}

(8)

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

2

Keliling lingkaran = 2 x PI x jari-jari

(9)

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);

}

}

(10)

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

(11)

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;

(12)

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;

(13)

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);

(14)

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);

(15)

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); } }

(16)

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.

(17)

14

LAPORAN RESMI

Kumpulkan hasil percobaan di atas dan tambahkan analisa untuk tiap percobaan,

latihan, dan tugas yang telah dibuat.

(18)

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

(19)

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

(20)

||

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

(21)

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.

(22)

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); } }

(23)

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); }

(24)

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); }

(25)

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.

(26)

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.

(27)

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;

}

(28)

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

(29)

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.

(30)

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 {

(31)

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;

(32)

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++;

(33)

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;

(34)

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)

(35)

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 20

F. 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

(36)

• 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.

(37)

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:

(38)

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

(39)

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;

(40)

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");

(41)

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);

(42)

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] + " "); }

(43)

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

(44)

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 =

(45)

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

(46)

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

String

merepresentasikan suatu teks. Class String berisi string yang tetap (immutable string).

Artinya sekali intance

String

dibuat maka isinya tidak bisa diubah. Kelas

String

memiliki 13 konstruktor yang memungkinkan kita membuat obyek

String

dan

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

String

memiliki method untuk menangani individual karakter dari suatu string,

membandingkan string, mencari string, mendapatkan substring, membuat kopi isi string

(47)

45

dan dijadikan lowercase atau uppercase. Java menyediakan operator spesial untuk

menggabungkan dua string yaitu operator plus (+).

Class

StringBuffer

mirip 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

StringBuffer

adalah method append dan insert. Method

append

selalu menambahkan teks diakhir string, sedang method

insert

menembahkan

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

sb

adalah obyek dari

StringBuffer

, maka

sb.append(x)

sama

dengan operasi

sb.insert(sb.length(),x). StringBuilder

adalah string yang

bersifat mutable. Operasi yang dimiliki class

StringBuilder

mirip 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

(48)

- \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); } }

(49)

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);

} }

(50)

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);

} }

(51)

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"); } } }

(52)

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); } }

Gambar

Tabel 2.1 Spesifikasi panjang  bit dan nilai default tipe data dasar
Tabel 3.1. Arithmatic operator  Arithmatic Operator  Keterangan
Tabel 3.2. Arithmatic operator
Tabel 3.5. Logical Operator
+7

Referensi

Dokumen terkait

Perwakilan Badan Kependudukan dan Keluarga Berencana Nasional..

Melihat pentingnya pengaruh kualitas jasa dalam mendukung proses penjualan, maka perlu dilakukan analisis terhadap kualitas jasa yang telah diberikan, sehingga dapat dilakukan

Supaya aku bisa membawa pesan ke kanselir surga dan membawa kembali surat keputusan untuk kalian tanpa naik banding .‖ Dan mer eka kembali menundukan kepalanya

Salah satu rekomendasi dari studi Masterplan Pengembangan Wilayah Sungai Walanae Cenranae, adalah pemanfaatan tampungan yang ada pada Danau Tempe untuk mengairi

Sehingga tujuan dari penelitian ini diharapkan dapat menghasilkan produk multimedia interaktif pembelajaran musik karawitan khususnya instrumen bonang barung untuk siswa SMK bidang

Terbang Bancahan di Desa Sukorejo Kecamatan Parengan Kabupaten Tuban. merupakan kesenian tradisional yang hidup dan berkembang di lingkungan masyarakat mayoritas

23 Berdasarkan tabel di atas dan Lampiran 20, tabel jumlah shift, waktu lembur, dan waktu libur perawat ruang rawat inap Pafio berdasarkan penjadwalan secara manual,

Berdasarkan hasil penelitian, makna diri CJ dalam proses mencari berita akan diturunkan lebih detail lagi ke dalam beberapa hal, yakni motif yang menjadi dasar bagi CJ ,