3 Pemrograman Java
3 Pemrograman Java
/*
Contoh program java sederhana
-----------------------------
*/
class Hello{
Catatan Penting!
Java bersifat case sensitive. Huruf besar dan kecil
adalah berbeda dalam Java. Oleh karena itu, pastikan
mengetik code di atas sama persis, tanpa mengubah tipe
huruf. Selain itu dalam Java, white space seperti karakter
spasi, tab, pindah baris, dan karakter lainnya yang berfungsi
15
untuk memformat tampilan, tidak memiliki arti apa pun selain
untuk memudahkan kita membaca code yang ditulis. Oleh
karena itu, gunakan karakter white space ini sesuka Anda
untuk memformat tampilan code yang ditulis, agar memu-
dahkan Anda atau siapa pun membacanya.
Catatan Penting!
Untuk selanjutnya, kemungkinan Anda akan banyak
bereksperimen dengan membuat class baru sendiri. Ingatlah,
selalu simpan setiap class yang dibuat ke dalam filenya
masing-masing yang sesuai dengan nama class-nya.
Contohnya jika Anda membuat class Test, simpan ke dalam
file Test.java.
Contoh:
C:\java_projects>javac Hello.java
Contoh:
C:\java_projects>java Hello
Ingat, pada perintah di atas, Hello adalah nama class, bukan nama
file, karena itu jangan memasukkan nama ekstensi file .class.
Sebagai hasil output dari program di atas, Anda akan mendapatkan
hasil sebagai berikut:
16
Hello Java...
/*
Contoh program java sederhana
-----------------------------
*/
class Hello {
Class VS Objek
Jika sampai saat ini Anda masih dibingungkan
dengan hubungan antara class dan objek, maka penjelasan
berikut ini mungkin dapat sedikit memberikan pencerahan.
Class dan objek memang memiliki hubungan yang erat. Class
sendiri dapat dikatakan sebagai spesifikasi/desain dari objek,
atau mungkin jika Anda lebih suka dengan istilah lain, yaitu
Blue Print.
Jika Anda seorang arsitek, yang harus dilakukan
sebelum membangun sebuah gedung adalah membuat desain
gedung yang akan dibangun di atas kertas, baru kemudian
17
gedung yang sesungguhnya dibangun berdasarkan desain
tersebut. Dalam hal ini, desain yang dibuat adalah class itu
sendiri, sedangkan gedung yang dibangun berdasarkan de-
sain tersebut adalah objeknya. Dengan demikian, jelas bahwa
class adalah suatu spesifikasi/desain dari objek, sedangkan
objek sendiri adalah instance (perwujudan) dari class. Alasan
ini juga yang menyebabkan kata instance sering digunakan
sebagai ganti dari objek karena memiliki arti yang sama.
18
System.out.println("Hello Java...");
19
3.2 Identifier
Identifier merupakan nama yang digunakan untuk menamai class,
interface, variabel, dan method. Anda dapat menentukan sendiri
identifier yang akan digunakan. Yang perlu diperhatikan mengenai
identifier ini adalah:
¾ Tidak ada batasan panjang, jadi kita dapat membuat identifier
dengan panjang berapa pun.
¾ Identifier harus diawali dengan huruf, underscore/garis bawah
(_) atau lambang dolar ($). Untuk selebihnya dapat meng-
gunakan karakter apa pun, kecuali karakter yang digunakan
sebagai operator oleh Java (seperti +, -, *, atau /).
¾ Bukan merupakan keywords yang dikenal oleh Java.
20
protected public return short static
strictfp super switch synchronized this
throw throws transient true try
void volatile while
3.4 Variabel
Variabel merupakan lokasi penyimpanan yang ada di memori. Setiap
variabel memiliki kemampuan menyimpan suatu informasi sesuai
dengan tipe data yang dideklarasikan untuk variabel tersebut saja.
Sintaks pendeklarasian variabel secara umum adalah sebagai beri-
kut:
tipe-data nama-variabel;
Tipe-data meliputi semua tipe data yang dikenal oleh Java,
sedangkan nama-variabel adalah identifier yang akan digunakan
untuk merujuk ke variabel tersebut di dalam program.
Contoh code:
int counter;
21
Variabel yang dideklarasikan dalam blok class akan dikenal di bagian
manapun dalam blok class tersebut. Variabel ini juga bahkan dapat
diakses dari luar class menggunakan referensi objek atau instance
dari class tersebut. Namun hal ini akan dipengaruhi oleh penggunaan
access specifier. Access specifier akan kita bahas pada saat kita
memasuki pembahasan tentang class. Untuk sementara ini demi
kemudahan, di dalam contoh program di buku ini, setiap variabel
yang dideklarasikan di dalam class tidak akan menggunakan access
specifier apa pun.
Pada dasarnya variabel dapat dideklarasikan di dalam blok code
manapun. Yang dimaksud dengan blok code di sini adalah bagian
dari code yang dimulai dengan karakter { dan ditutup dengan
karakter }. Blok ini menentukan scope dari suatu variabel, yaitu
apakah suatu variabel akan dikenal di bagian lain dari program atau
tidak. Perhatikan juga bahwa Anda dapat membuat nested blok, di
mana di dalam suatu blok code terdapat blok code lainnya. Aturan
sederhana yang perlu diingat hanyalah, pendeklarasian suatu va-
riabel dalam suatu blok code akan dikenal oleh nested blok yang ada
di dalam blok code tersebut, namun tidak berlaku sebaliknya. Untuk
lebih jelasnya, perhatikan contoh code berikut ini:
class Scope {
static int a = 2; //deklarasi variabel dalam blok class
public static void main(String[] args) {
int x; //variabel x ini dikenal di seluruh method main()
x = 10;
//variabel a juga dikenal di sini
System.out.println("Nilai a : " + a);
y = 5;
//variabel x dikenal di sini
System.out.println("Nilai x : " + x);
//variabel a juga dikenal di sini
System.out.println("Nilai a : " + a);
{ //nested blok
int z;//variabel ini hanya dikenal di
//dalam nested blok ini saja
22
z = 20;
23
class Scope {
int x; //Î deklarasi variabel int dengan nama
// x dalam blok class
public static void main(String[] args) {
int x; // Î deklarasi variabel int
// dengan nama x dalam blok code
// baris code lainnya...
24
Nama Tipe Ukuran Nilai Standar
Data dalam bit
byte 8 -27 s.d. 27 – 1
short 16 -215 s.d. 215 – 1
Int 32 -231 s.d. 231 – 1
long 64 -263 s.d. 263 – 1
float 32 Negatif: IEEE 754
-3.4028234663852886E+38 s.d. floating
-1.40129846432481707e-45 point
Positif:
1.40129846432481707e-45 s.d.
3.4028234663852886E+38
Positif:
4.94065645841246544e-324 s.d.
1.7976931348623157E+308
char 16 ‘\u0000’ s/d ‘\uFFFF’ ISO
(0 s/d 65535) Unicode
Charater
Set
boolean 8 true atau false
25
Contoh:
int indeks = 2;
int hasil = indeks * 11;
class ProgSederhana {
int x = 0; /* Pendeklarasian variabel dengan
tipe data int */
var.x = 20;
26
Penjelasan yang lebih lengkap untuk tipe data ini akan Anda
dapatkan setelah mendalami lebih lanjut tentang class pada Bab 6.
Pada code di atas, angka 100 merupakan nilai literal, begitu juga
dengan angka 11 pada baris berikutnya. Notasi index * 11 mem-
punyai arti bahwa nilai yang dipegang oleh variabel index (index
bukan berupa nilai literal melainkan variabel) dikalikan dengan nilai
literal 11 dan hasilnya ditampung kembali oleh variabel index. Ada
baiknya Anda mencoba membuat sebuah class baru dan mengetik
perintah di atas untuk melihat hasilnya. Tambahkan code berikut ini
untuk melihat nilai dari variabel index:
System.out.println(index);
Literal Integer
27
Anda perlu menambahkan karakter L atau l di akhir nilai literal yang
Anda ketik, untuk memberi tahu Java bahwa nilai literal yang diketik
tersebut bertipe data long dan bukan bertipe int. Contoh
0x7ffffffffffffffL dan 9034872617383847568L.
Literal Floating-Point
Nilai literal 10.5 di atas secara default akan bertipe data double
sehingga menimbulkan kesalahan karena double memiliki ukuran
lebih besar daripada float. Untuk memperbaikinya, Anda dapat me-
nambahkan tanda F atau f di belakang nilai literal tersebut, seperti
berikut ini:
28
Literal Boolean
Untuk tipe data boolean, Java hanya mengenal dua nilai literal, yaitu
true dan false. Contoh penggunaan:
boolean value1 = true ;
boolean value2 = false;
Literal Character
29
Berikut ini daftar escape sequence yang dikenal oleh Java.
Escape Sequences Deskripsi
\ddd karakter Oktal(ddd)
\uxxxx karakter
Heksadesimal(xxxx)
\’ tanda petik
\” tanda petik ganda
\\ tanda \ (backslash)
\r carriage return
\n pindah baris
\f form feed
\t tab
\b backspace
Tabel 3.3 Daftar Escape Sequences yang dikenal oleh
Java
Literal String
Literal untuk string dalam Java ditulis di antara tanda petik ganda,
dan sama halnya seperti literal untuk karakter, escape sequences
juga dapat digunakan di sini. Contoh literal string:
"Literal String"
"Baris 1\nBaris 2"
"\"Tanda petik ganda\" dan tanda backslash \\"
30
3.5.4 Array
Seperti yang telah kita bahas sebelumnya bahwa setiap kali hendak
menggunakan suatu variabel, kita harus terlebih dahulu mendekla-
rasikannya. Yang menjadi masalah adalah bagaimana jika hendak
menggunakan sekumpulan variabel yang sangat banyak dengan tipe
data tertentu, misalnya membutuhkan 1000 buah variabel bertipe int
untuk suatu perhitungan. Sangat tidak efisien jika kita harus men-
deklarasikan ke 1000 variabel tersebut satu per satu. Oleh karena
itulah Java memiliki tipe data array.
31
menggunakan variabel ini. Pendeklarasian yang ditunjukkan oleh
code di atas hanya mendeklarasikan suatu variabel array dengan tipe
data int bernama arr1 dan arr2, namun tempat yang akan
digunakan untuk menampung array itu sendiri belum dibuat di
memori. Berikut ini bentuk umum pengalokasian memori untuk
array:
nama-array = new tipe-data[ukuran-array];
x[0] = 20;
x[1] = 10;
x[2] = 0;
32
Variabel x pada program di atas dideklarasikan bertipe array of int,
di mana ukuran array yang dialokasikan mampu menampung 3
buah data bertipe int. Pengaksesan variabel x dilakukan mengguna-
kan indeksnya. Hasil eksekusi program di atas adalah sebagai
berikut:
Nilai x[0] : 20
Nilai x[1] : 10
Nilai x[2] : 0
Jika mengetik code di atas pada program, maka pada saat Anda
mengeksekusinya, Anda akan mendapatkan eksepsi berupa:
java.lang.ArrayIndexOutOfBoundsException
33
int[] x = new x[3];
x = {0,1,2}; // Error...
Nilai di dalam
kotak menunjukkan
indeks dari Array 3 Baris
34
/* Alokasi memori untuk dimensi berikutnya */
3 Kolom
Nilai di dalam
kotak menunjukkan [0][0]
3 Baris
indeks dari Array [1][0] [1][1]
[2][0] [2][1] [2][2]
35
nyiaan memori. Dalam hal ini, penggunaan array multidimensi yang
tidak simetris mungkin merupakan solusi terbaik.
Seperti yang telah disebutkan di atas, sebenarnya array multidimensi
adalah array yang terdapat dalam array. Dengan konsep ini, Anda
dapat melakukan inisialisasi terhadap array multidimensi sama
seperti menginisialisasi array satu dimensi.
Contoh inisialisasi array dua dimensi:
int[][] arr2 = {{11,12,13},
{21,22,23},
{31,32,33}};
Satu hal lagi yang perlu diperhatikan tentang tipe data array, yaitu
bahwa Anda dapat mengetahui kapasitas atau panjang dari suatu
array dengan mengakses property yang dimiliki oleh objek array,
yaitu length. Perhatikan contoh penggunaannya berikut ini:
class DemoArray {
public static void main(String[] args) {
// array 3*2
36
int arr[][] = {{1,2},{3,4},{5,6}};
37
Sintaks code:
(target-tipe-data)nilai
target-tipe-data : tipe data yang menjadi tujuan konversi.
Nilai : dapat berupa nilai literal atau berupa
variabel.
Contoh code:
Float data1 = 10.2f;
int data2 = (int)data1; // -> casting dari float ke int
int data3 = 257;
byte data4 = (byte)data3; // -> casting dari int ke byte
Yang perlu diperhatikan di sini adalah jika Anda mengubah tipe data
yang berbeda jenis, seperti dari tipe data pecahan (floating-point) ke
tipe data bilangan bulat (Integer), maka akan terjadi pemotongan
(truncation). Dalam contoh di atas, data2 akan bernilai 10.
Sedangkan untuk tipe data yang lebih kecil jika digunakan untuk
menampung data yang lebih besar dari daya tampungnya, maka
yang akan tertampung adalah nilai modulusnya (sisa bagi). Dalam
contoh di atas, tipe data variabel data4 adalah byte (jumlah
maksimum yang dapat ditampung oleh byte adalah 256), sedangkan
nilai yang hendak ditampung adalah 257. Dari perhitungan 257/256
diperoleh modulus = 1 maka data4 akan bernilai 1.
Anda juga perlu memperhatikan bahwa di dalam Java dikenal apa
yang disebut promosi tipe data secara otomatis dalam suatu ekspresi
matematik. Untuk lebih jelasnya perhatikan contoh code berikut ini:
byte data1 = 10;
byte data2 = 50;
byte data3 = data1 * data2;
Variabel data1 dan data2 memiliki nilai yang terdapat dalam range
byte. Namun, hasil perkalian data1 dan data2 akan menghasilkan
nilai 500 yang tidak dapat lagi ditampung oleh tipe data byte. Karena
alasan ini, maka pada waktu melakukan komputasi, Java akan
melakukan promosi tipe data byte ke tipe data int supaya hasil
perhitungannya benar. Yang menjadi masalah adalah, promosi tipe
data secara otomatis tersebut akan tetap dilakukan, sekalipun hasil
dari perkalian variabel data1 dan data2 tidak melebihi kapasitas
tampung tipe data byte.
38
Contoh code:
Error karena hasil komputasi dari
byte data1 = 20; data1*5 adalah berupa int
byte data2 = data1 * 5; sehingga tidak dapat ditampung oleh
variabel data2 yang bertipe byte.
Catatan Penting!
Konversi tipe data terkadang dapat mengakibatkan
kebingungan dan kesalahan logik yang sulit dicari penyebab-
nya. Perhatikan contoh code di bawah ini.
39
int nilai = 26;
double hasil = nilai/4;
3.6 Kuis
1. Apa perbedaan antara tipe data primitif dan tipe data referensi?
2. Untuk melatih pengetahuan kita akan tipe data, buatlah program
untuk menghitung luas:
• Segitiga
• Lingkaran
• Bujursangkar
• Empat persegi panjang
Hati-hati dengan konversi tipe data secara otomatis yang dilaku-
kan oleh Java, terutama konversi dari tipe floating-point ke
integer.
40