Aplikasi Berbasis Teks


Pembahasan  kali  ini  akan  menitikberatkan  pada  bahasan  penggunaan  argument 

command-line. Selebihnya, Anda akan mempelajari mengenai penggunaan streams 

untuk mendapatkan nilai input dari user pada saat runtime, sekaligus dalam proses 

manipulasi file.

Setelah menyelesaikan pembahasan ini, Anda diharapkan dapat :

1. Mendapatkan input dari comman-line

2. Mengetahui cara untuk memanipulasi properties dari sistem

3. Membaca standart input

4. Membaca dan menulis file

5.2 Argument Command-Line dan System Properties

Seperti yang telah Anda ketahui pada pembahasan sebelumnya, JAVA mengijinkan 

user  untuk  memasukkan  data  dari  command-line.  Sebagai  contoh,  untuk 

meneruskan argument 1 dan 2 kepada program Java bernama Calculate, anda dapat 

menuliskan baris berikut pada command prompt

java Calculate 1 2

Pada contoh berikut ini, data 1 disimpan pada variabel args[0], begitu pula dengan 

data 2 yang disimpan pada  args[1]. Sehingga, tujuan dari deklarasi  String args[] 

sebagai sebuah parameter pada method utama menjadi jelas.

Selain melewatkan argument menuju method utama, Anda juga dapat memanipulasi 

system properties dari command-line.

System properties hampir menyamai environment variables, namun tidak memiliki 

ketergantungan pada spesifikasi platform yang digunakan. Sebuah property secara 

sederhana berupa pemetaan antara property name dan value yang dimilikinya. Hal 

ini ditunjukkan pada Java dalam class Properties. Class System menyediakan sebuah 

method untuk menentukan system properties yang digunakan, method getProperties 

yang menghasilkan sebuah object  Properties. Class yang sama juga menyediakan 

method getProperty yang memiliki dua buah bentuk.

Pengenalan Pemrograman  2  1


public static String getProperty(String key) 

Bentuk ini menghasilkan nilai String dari System Properties yang ditunjukkan oleh 

key yang ditentukan. Jika hasil menunjukkan nilai null, berarti tidak terdapat property 

dengan key yang ditentukan.

public static String getProperty(String key, String def) 

Bentuk ini  juga menghasilkan nilai  String dari  System Properties sesuai key yang 

ditentukan.  Akan  menghasilkan  nilai  def,  sebuah nilai  default,  jika  tidak  terdapat 

property dengan key yang sesuai.

Tabel 1.1: getProperty() method dari class System

Kita  tidak  dapat  cukup  berhenti  pada  detail  dari  system  properties,  namun 

dilanjutkan  dengan  memanipulasi  system  properties  yang  digunakan.  Jika  Anda 

tertarik mempelajari lebih lanjut tentang system properties, Anda dapat menelusuri 

dokumentasi API yang disediakan.

Anda  dapat  menggunakan  argument  opsional  –D  pada  perintah  Java  dalam 

command-line untuk menambahkan property baru.

java -D<name>=value

Sebagai contoh, untuk mengatur system property dengan nama user.home bernilai 

phillipines, gunakan perintah berikut :

java -Duser.home=philippines

Untuk  menampilkan  daftar  system  properties  yang  tersedia  pada  sistem  Anda, 

gunakan method getProperties seperti yang ditunjukkan sebagai berikut :

System.getProperties().list(System.out);

Pengenalan Pemrograman  2  2


5.3 Membaca Standard Input

Dibandingkan dengan mendapatkan masukan user dari command-line, sebagian user 

lebih memilih untuk memasukkan data bilamana diminta oleh program pada saat 

eksekusi.  Satu cara dalam melakukan hal ini adalah dengan menggunakan stream. 

Sebuah  stream  adalah  abstraksi  dari  sebuah  file  atau  sebuah  perangkat  yang 

mengijinkan  beberapa  set  item  untuk  dibaca  atau  ditulisi.  Streams  terhubung 

dengan physical devices seperti keyboards, consoles dan files. Terdapat dua bentuk 

umum dari streams, byte streams dan character streams. Byte streams digunakan 

pada data biner, sedangkan character streams digunakan pada karakter Unicode. 

System.in  dan  System.out adalah dua contoh dari  byte  streams yang digunakan 

dalam  Java.  Contoh  pertama  mereferensikan  pada  keyboard,  kemudian  contoh 

kedua mereferensikan pada console.

Untuk  membaca  karakter  dari  keyboard,  Anda  dapat  menggunakan  byte  stream 

System.in yang terdapat pada object  BufferedReader.  Baris berikut  menunjukkan 

bagaimana untuk melakukan hal tersebut :

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

Method read dari object BufferedReader selanjutnya digunakan untuk membaca nilai 

input dari perangkat input.

ch=(int)br.read(); //method read menghasilkan nilai integer

Cobalah contoh kode berikut :

import java.io.*;

class FavoriteCharacter {

public static void main(String args[]) throws IOException {

System.out.println("Hi, what's your favorite character?");

char favChar;

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

favChar = (char) br.read();

System.out.println(favChar + " is a good choice!");

}

}

Jika Anda lebih memilih untuk membaca keseluruhan baris daripada membaca satu 

karakter tiap waktu, gunakan method readLine :

str = br.readLine();

Pengenalan Pemrograman  2  3


Berikut ini  sebuah program yang hampir  menyerupai contoh sebelumnya,  namun 

membaca keseluruhan string, bukan satu karakter.

import java.io.*;

class GreetUser {

public static void main(String args[]) throws IOException {

System.out.println("Hi, what's your name?");

String name;

BufferedReader br = new BufferedReader(new 

InputStreamReader(System.in));

name = br.readLine();

System.out.println("Nice to meet you, " + name + "! :)");

}

}

Pada saat menggunakan streams, jangan lupa untuk mengimport package  java.io 

seperti yang ditunjukkan dibawah ini :

import java.io.*;

Satu hal lagi yang perlu untuk diingat, pembacaan dari streams dapat menyebabkan 

terjadinya  exception.  Jangan  lupa  untuk  menangani  exception  tersebut 

menggunakan  perintah  try-catch  atau  dengan  mengindikasikan  exception  pada 

klausa throws dalam method.

Pengenalan Pemrograman  2  4


5.4 Menangani File

Pada  beberapa  kasus,  masukan  data  disimpan  pada  sebuah  file.  Selanjutnya, 

terdapat beberapa cara jika Anda ingin menyimpan output dari program pada sebuah 

file. Pada sistem terkomputerisasi, data dari Siswa yang dapat digunakan sebagai 

input oleh sistem umumnya terseimpan pada sebuah file terpisah. Kemudian, salah 

satu kemungkinan output dari sistem adalah informasi tentang mata pelajaran yang 

diikuti oleh siswa. Sekali lagi, output dalam hal ini dapat disimpan dalam sebuah file. 

Seperti yang terlihat pada aplikasi, terdapat suatu kebutuhan untuk membaca dan 

menulis  sebuah  file.  Anda akan  mempelajari  tentang  file  input  dan  output  pada 

bagian ini.

5.4.1 Membaca sebuah File

Untuk  membaca  sebuah  file,  Anda  dapat  menggunakan  class  FileInputStream. 

Berikut ini adalah salah satu constructor dari class tersebut :

FileInputStream(String filename)

Constructor tersebut membuat sebuah koneksi terhadap file dimana nama dari file 

tersebut  ditunjukkan  sebagai  sebuah  argument.  Exception  berupa 

FileNotFoundException akan muncul jika file tidak ditemukan atau tidak dapat dibuka 

dan kemudian dibaca.

Setelah  membuat  sebuah  input  stream,  Anda  kemudian  dapat  menggunakannya 

untuk  membaca  sebuah  file  dengan  menggunakan  method  read.  Method  read 

menghasilkan  sebuah  nilai  integer,  dan  akan  menunjukkan  nilai  1  jika  telah 

mencapai batas akhir file.

Pengenalan Pemrograman  2  5


Berikut ini contohnya :

import java.io.*;

class ReadFile {

public static void main(String args[]) throws IOException {

System.out.println("What is the name of the file to read from?");

String filename;

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

filename = br.readLine();

System.out.println("Now reading from " + filename + "...");

FileInputStream fis = null;

try {

fis = new FileInputStream(filename);

} catch (FileNotFoundException ex) {

System.out.println("File not found.");

}

try {

char data;

int temp;

do {

temp = fis.read();

data = (char) temp;

if (temp != -1) {

System.out.print(data);

}

     } while (temp != -1);

} catch (IOException ex) {

System.out.println("Problem in reading from the file.");

}

}

}

5.4.2 Menulis sebuah file

Untuk menuliskan sebuah file,  Anda dapat menggunakan class  FileOutputStream. 

Berikut ini salah satu constructor yang dapat Anda gunakan.

FileOutputStream(String filename)

Contructor  tersebut  menyediakan  jalur  output  stream terhadap  sebuah file  yang 

akan ditulisi. Sebuah Exception berupa FileNotFoundException akan muncul jika file 

yang dimaksud tidak dapat dibuka untuk ditulisi.

Jika output stream telah dibuat, Anda dapat menggunakannya untuk menulisi file 

yang dituju menggunakan method write. Method tersebut menggunakan penandaan 

sebagai berikut :

void write(int b) 

Parameter b mereferensikan data yang akan dituliskan pada file sesuai dengan hasil 

output stream.

Pengenalan Pemrograman  2  6


Program berikut menunjukkan contoh penulisan terhadap file :

import java.io.*;

class WriteFile {

public static void main(String args[]) throws IOException {

System.out.println("What  is  the  name  of  the  file  to  be  written 

to?");

String filename;

BufferedReader br = new BufferedReader(new 

    InputStreamReader(System.in));

filename = br.readLine();

System.out.println("Enter data to write to " + filename + 

    "...");

System.out.println("Type q$ to end.");

FileOutputStream fos = null;

try {

fos = new FileOutputStream(filename);

} catch (FileNotFoundException ex) {

System.out.println("File cannot be opened for 

     writing.");

}

try {

boolean done = false;

int data;

do {

data = br.read();

if ((char)data == 'q') {

data = br.read();

if ((char)data == '$') {

done = true;

} else {

fos.write('q');

fos.write(data);

}

} else {

fos.write(data);

}

    } while (!done);

} catch (IOException ex) {

System.out.println("Problem in reading from the file.");

}

}

}



Tour dari Package java.lang 

Java datang dengan beberapa class built-in yang bermanfaat. Mari kita membahas class-
class tersebut.
Setelah melengkapi pelajaran ini, Anda diharapkan dapat:
1. Menggunakan class-class Java yang telah ada
• Math 
• String 
• StringBuffer 
• Wrapper 
• Process 
• System 
4.2 Class Math
Java juga menyediakan konstanta dan method untuk menunjukkan perbedaan operasi 
matematika  seperti  fungsi  trigonometri  dan  logaritma.  Selama  method-method  ini 
semua  static,  Anda  dapat  menggunakannya  tanpa  memerlukan  sebuah  objek Math. 
Untuk  melengkapi  daftar   konstanta  dan  method-method  ini,  lihatlah  acuan  pada 
dokumentasi  Java  API.  Dibawah  ini  beberapa  method-method  umum  yang  sering 
digunakan.
Method-Method Math 
public static double abs(double a) 
Menghasilkan  nilai  mutlak  a.  Sebuah  method  yang  di-overload.  Dapat  juga 
menggunakan  nilai  float  atau  integer  atau  juga  long  integer  sebagai  parameter, 
dengan  kondisi  tipe  kembalinya  juga  menggunakan  float  atau  integer  atau  long 
integer, secara berturut-turut.
public static double random() 
Menghasilkan nilai positif bilangan acak (random) yang lebih besar atau sama dengan 
0.0 tetapi kurang dari 1.0.
public static double max(double a, double b) 
Menghasilkan nilai maksimum, diantara dua nilai  double,  a and  b. Sebuah method 
yang di-overload. Dapat juga menggunakan nilai float atau integer atau juga long 
integer sebagai parameter, dengan kondisi tipe kembalinya juga menggunakan float 
atau integer atau long integer, secara berturut-turut.
public static double min(double a, double b) 
Menghasilkan nilai minimum diantara dua nilai double, a and b. Sebuah method yang 
di-overload. Dapat juga menggunakan nilai float atau integer atau juga long integer 
Pengenalan Pemrograman  2  1

sebagai  parameter,  dengan kondisi  tipe  kembalinya juga menggunakan float  atau 
integer atau long integer, secara berturut-turut.
public static double ceil(double a) 
Menghasilkan bilangan bulat terkecil yang lebih besar atau sama dengan a.
public static double floor(double a) 
Menghasilkan bilangan bulat terbesar yang lebih kecil atau sama dengan a.
public static double exp(double a) 
Menghasilkan angka Euler, e pangkat a. 
public static double log(double a) 
Menghasilkan logaritma natural dari a.
public static double pow(double a, double b) 
Menghasilkan a pangkat b. 
public static long round(double a) 
Menghasilkan pembulatan keatas ke long terdekat. Sebuah method yang di-overload. 
Dapat juga menggunakan  float pada argument dan akan menghasilkan pembulatan 
ke atas ke int terdekat.
public static double sqrt(double a) 
Menghasilkan akar kuadrat a.
public static double sin(double a) 
Menghasilkan sinus sudut a dalam radian.
public static double toDegrees(double angrad) 
Menghasilkan nilai derajat yang kira-kira setara dengan nilai radian yang diberikan.
public static double toRadians(double angdeg) 
Menghasilkan nilai radian yang kira-kira setara dengan nilai derajat yang diberikan.
Tabel 1.1: Beberapa method dari class Math
Pengenalan Pemrograman  2  2

Di bawah ini adalah program yang menunjukkan bagaimana method-method tersebut 
digunakan.
class MathDemo {
   public static void main(String args[]) {
      System.out.println("absolute value of -5: " + 
                                                 Math.abs(-5));
      System.out.println("absolute value of 5: " + 
                                                 Math.abs(-5));
      System.out.println("random number(max value is 10): " + 
                                             Math.random()*10);
      System.out.println("max of 3.5 and 1.2: " + 
                                           Math.max(3.5, 1.2));
      System.out.println("min of 3.5 and 1.2: " + 
                                           Math.min(3.5, 1.2));
      System.out.println("ceiling of 3.5: " + Math.ceil(3.5));
      System.out.println("floor of 3.5: " + Math.floor(3.5));
      System.out.println("e raised to 1: " + Math.exp(1));
      System.out.println("log 10: " + Math.log(10));
      System.out.println("10 raised to 3: " + Math.pow(10,3));
      System.out.println("rounded off value of pi: " + 
                                          Math.round(Math.PI));
      System.out.println("square root of 5 = " + Math.sqrt(5));
      System.out.println("10 radian = " + Math.toDegrees(10) + 
                                                   " degrees");
      System.out.println("sin(90): " + 
                                 Math.sin(Math.toRadians(90)));
   }
}
Ini  adalah  contoh  output  dari  program  yang  dibuat.  Coba  jalankan  program  dan 
bereksperimenlah secara bebas dengan memberikan argument.
absolute value of -5: 5
absolute value of 5: 5
random number(max value is 10): 4.0855332335477605
max of 3.5 and 1.2: 3.5
min of 3.5 and 1.2: 1.2
ceiling of 3.5: 4.0
floor of 3.5: 3.0
e raised to 1: 2.7182818284590455
log 10: 2.302585092994046
10 raised to 3: 1000.0
rounded off value of pi: 3
square root of 5 = 2.23606797749979
10 radian = 572.9577951308232 degrees
sin(90): 1.0
Pengenalan Pemrograman  2  3

4.3 Class String dan StringBuffer
Class  String  disediakan  oleh  Java  SDK  dengan  menggunakan  kombinasi  character 
literals. Tidak seperti bahasa pemrograman lainnya,seperti C atau C++, strings dapat 
digunakan  menggunakan  array  dari  character  atau  disederhanakan  dengan 
menggunakan class String. Sebagai catatan, bahwa sebuah objek  String  berbeda dari 
sebuah array dari character.
4.3.1 Constructor String 
Class  String mempunyai  11  constructor.  Untuk  melihat  bagaimana  constructor- 
constructor ini, perhatikan contoh berikut.
/* Contoh ini diambil dari catatan Dr. Encarnacion. */
class StringConstructorsDemo {
   public static void main(String args[]) {
      String s1 = new String();  // creates an empty string
      char chars[] = { 'h', 'e', 'l', 'l', 'o'};
      String s2 = new String(chars); // s2 = "hello";
      byte bytes[] = { 'w', 'o', 'r', 'l', 'd' };
      String s3 = new String(bytes); // s3 = "world"
      String s4 = new String(chars, 1, 3);
      String s5 = new String(s2);
      String s6 = s2;
      System.out.println(s1);
      System.out.println(s2);
      System.out.println(s3);
      System.out.println(s4);
      System.out.println(s5);
      System.out.println(s6);
   }
}
4.3.2 Method-method String 
Di bawah ini adalah daftar dari method-method String.
Method-Method String 
public char charAt(int index)
Mengirim karakter di indeks yang dispesifikasikan oleh parameter index.
public int compareTo(String anotherString)
Membandingkan dua String dan mengirim bilangan int yang menspesifikasikan apakah 
objek string pemanggil kurang dari atau sama dengan  anotherString.  Bernilai negatif 
jika objek yang dilewatkan (passed string) lebih besar, 0 jika kedua string sama, dan 
bernilai positif jika objek string pemanggil (calling string) lebih besar.
public int compareToIgnoreCase(String str)
Serupa dengan compareTo tetapi case insensitivity.
public boolean equals(Object anObject)
Pengenalan Pemrograman  2  4

Method-Method String 
Menghasilkan nilai  true  jika parameter tunggalnya tersusun dari karakter yang sama 
dengan  objek  tempat  Anda  memanggil  equals.  Sedangkan  jika  parameter  yang 
dispesifikkan bukan sebuah objek  String atau jika tidak cocok dengan urutan simbol 
pada string, method akan dikembalikan dengan nilai false.
public boolean equalsIgnoreCase(String anotherString)
Serupa dengan equals tetapi case insensitivity.
public void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
Mendapatkan characters  dari  string yang dimulai  pada index srcBegin hingga index 
srcEnd dan mengkopi character-character tersebut pada array dst dimulai pada index 
dstBegin.
public int length()
Menghasilkan panjang String.
public String replace(char oldChar, char newChar)
Mengganti karakter, semua yang kemunculan oldChar diganti newChar.
public String substring(int beginIndex, int endIndex)
Mengirim substring dimulai dari indeks yang dispesifikasikan  beginIndex  dan berakhir 
dengan indeks yang dispesifikasikan endIndex. 
public char[] toCharArray()
Returns the character array equivalent of this string.
public String trim()
Menghilangkan whitespace di awal dan akhir objek String.
public static String valueOf(-)
Dapat menggunakan tipe data sederhana seperti boolean, integer atau character, atau 
juga  menggunakan  sebuah  objek  sebagai  parameter.  Mengirim  objek  String  yang 
merepresentasikan tipe tertentu yang dilewatkan sebagai parameter. 
Tabel 1.2.1: Beberapa method dari class String
Perhatikan bagaimana method-method tersebut digunakan dalam program di bawah ini.
class StringDemo {
   public static void main(String args[]) {
      String name = "Jonathan";
      System.out.println("name: " + name);
      System.out.println("3rd character of name: " + 
                                               name.charAt(2));
/* character yang pertama nampak secara berurutan 
mempunyai nilai unicode lebih kecil */
      System.out.println("Jonathan compared to Solomon: " + 
                                    name.compareTo("Solomon"));
      System.out.println("Solomon compared to Jonathan: " +
                              "Solomon".compareTo("Jonathan"));
/* 'J' mempunyai nilai unicode yang lebih kecil dibanding 
'j' */
      System.out.println("Jonathan compared to jonathan: " + 
Pengenalan Pemrograman  2  5

                                   name.compareTo("jonathan"));
      System.out.println("Jonathan compared to jonathan (ignore 
              case): " + name.compareToIgnoreCase("jonathan"));
      System.out.println("Is Jonathan equal to Jonathan? " +
                                      name.equals("Jonathan"));
      System.out.println("Is Jonathan equal to jonathan? " +
                                      name.equals("jonathan"));
      System.out.println("Is Jonathan equal to jonathan (ignore 
                 case)? " + name.equalsIgnoreCase("jonathan"));
      char charArr[] = "Hi XX".toCharArray();
/* Membutuhkan tambahan 1 untuk indeks endSrc dari 
getChars */
      "Jonathan".getChars(0, 2, charArr, 3);
      System.out.print("getChars method: ");
      System.out.println(charArr);
      System.out.println("Length of name: " + name.length());
      System.out.println("Replace a's with e's in name: " + 
                                       name.replace('a', 'e'));
/* Membutuhkan tambahan 1 untuk parameter endIndex dari 
substring*/
      System.out.println("A substring of name: " + 
                                         name.substring(0, 2));
      System.out.println("Trim \"  a b c d e f   \": \"" +
                             "  a b c d e f   ".trim() + "\"");
      System.out.println("String representation of boolean 
                  expression 10>10: " + String.valueOf(10>10));
/* method toString secara implisit dipanggil method 
println */      
      System.out.println("String representation of boolean 
                  expression 10<10: " + (10<10));
/* Catatan, tidak ada perubahan pada nama objek String 
meskipun setelah penggunaan semua method. */
      System.out.println("name: " + name);
   }
}
Ini adalah output dari program yang dibuat.
name: Jonathan
3rd character of name: n
Jonathan compared to Solomon: -9
Solomon compared to Jonathan: 9
Jonathan compared to jonathan: -32
Jonathan compared to jonathan (ignore case): 0
Is Jonathan equal to Jonathan? true
Is Jonathan equal to jonathan? false
Is Jonathan equal to jonathan (ignore case)? true
content of charArr after getChars method: Hi Jo
Length of name: 8
Replace a's with e's in name: Jonethen
A substring of name: Jo
Trim "  a b c d e f   ": "a b c d e f"
String representation of boolean expression 10>10: false
String representation of boolean expression 10<10: false
name: Jonathan
Pengenalan Pemrograman  2  6

4.3.3 Class StringBuffer 
Ketika  objek  String diciptakan,  objek  String tidak  bisa  lagi  dimodifikasi.  Objek 
StringBuffer serupa dengan objek  String, kecuali kenyataan bahwa objek StringBuffer 
bersifat dapat berubah atau dapat dimodifikasi, sedangkan pada object String bersifat 
konstan. Panjang dan isi dapat diubah hingga beberapa pemanggilan method.
Ini adalah beberapa method pada class StringBuffer. Lihatlah acuan pada dokumentasi 
Java API.
Method-Method StringBuffer 
public int capacity()
Mengirim jumlah memori yang dialokasikan untuk StringBuffer.
public StringBuffer append(-)
Appends  merepresentasikan  string  dari  argument  untuk  objek StringBuffer. 
Menggunakan parameter tunggal seperti tipe-tipe data berikut: boolean, char, char [], 
double, float, int, long, Object, String and StringBuffer. Masih mempunyai versi yang 
di-overload lainnya.
public char charAt(int index)
Mengirim character di lokasi tertentu di  StringBuffer yang dispesifikasikan parameter 
index.
public void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
Mendapatkan characters dari objek yang dimulai pada indeks srcBegin hingga indeks 
srcEnd dan mengkopi character- character tersebut pada array dst dimulai pada indeks 
dstBegin.
public StringBuffer delete(int start, int end) 
Menghapus character-character pada range yang ditentukan.
public StringBuffer insert(int offset, -) 
Menyisipkan beragam tipe data di offset spesifik di StringBuffer. Sebuah method yang 
di-overload. Tipe data yang mungkin digunakan: boolean, char, char [], double, float, 
int, long, Object and String.  Masih mempunyai versi yang di-overload lainnya.
public int length()
Memperoleh panjang atau jumlah character di objek StringBuffer.
public StringBuffer replace(int start, int end, String str) 
Mengganti  bagian dari  objek, seperti  yang dispesifikasikan oleh argument satu dua, 
dengan spesifikasi string str.
public String substring(int start, int end)
Substring menyaring bagian tertentu dari string, dimulai pada pengspesifikasian indeks 
start hingga indeks the end.
public String toString()
Mengkonversi objek ke representasi string.
Tabel 1.2.2: Beberapa method dari class StringBuffer
Pengenalan Pemrograman  2  7

Program di bawah ini menunjukkan bagaimana menggunakan method-method tersebut.
class StringBufferDemo {
   public static void main(String args[]) {
      StringBuffer sb = new StringBuffer("Jonathan");
      System.out.println("sb = " + sb);
      /* initial capacity is 16 */
      System.out.println("capacity of sb: " + sb.capacity());
      System.out.println("append \'O\' to sb: " + 
                                             sb.append("O"));
      System.out.println("sb = " + sb);
      System.out.println("3rd character of sb: " + 
                                               sb.charAt(2));
      char charArr[] = "Hi XX".toCharArray();
      /* Need to add 1 to the endSrc index of getChars */
      sb.getChars(0, 2, charArr, 3);
      System.out.print("getChars method: ");
      System.out.println(charArr);
      System.out.println("Insert \'jo\' at the 3rd cell: " +
                                         sb.insert(2, "jo"));
      System.out.println("Delete \'jo\' at the 3rd cell: " +
                                            sb.delete(2,4));
      System.out.println("length of sb: " + sb.length());
      System.out.println("replace: " +
                                   sb.replace(3, 9, " Ong"));
      /* Need to add 1 to the endIndex parameter of substring*/
      System.out.println("substring (1st two characters): " +
                                         sb.substring(0, 3));
      System.out.println("implicit toString(): " + sb);
   }
}
Ini adalah output dari  program yang telah dibuat di  atas. Sekali  lagi,  bereksperimen 
secara bebas dengan code-code merupakan cara terbaik  mempelajari  sintaks-sintaks 
yang ada.
sb = Jonathan
capacity of sb: 24
append 'O' to sb: JonathanO
sb = JonathanO
3rd character of sb: n
getChars method: Hi Jo
Insert 'jo' at the 3rd cell: JojonathanO
Delete 'jo' at the 3rd cell: JonathanO
length of sb: 9
replace: Jon Ong
substring (1st two characters): Jon
implicit toString(): Jon Ong
Pengenalan Pemrograman  2  8

4.4 Class-class Wrapper
Sesungguhnya,  tipe  data  primitif  seperti  int,  char and  long bukanlah  sebuah  objek. 
Sehingga, variabel-variabel  tipe data ini  tidak dapat mengakses method-method dari 
class Object. Hanya objek-objek nyata, yang dideklarasikan menjadi referensi tipe data, 
dapat mengakses method-method dari class Object. Ada suatu keadaan, bagaimanapun, 
ketika  Anda  membutuhkan  sebuah  representasi  objek  untuk  variabel-variabel  tipe 
primitif  dalam rangka  menggunakan method-  method  Java  built-in.  Sebagai  contoh, 
Anda boleh menambahkan variabel tipe primitif  pada objek  Collection.  Disinilah class 
wrapper  masuk.  Class  wrapper  adalah  representasi  objek  sederhana  dari  variabel-
variabel non-objek yang sederhana. Demikian daftar dari class wrapper.
Tipe Data Primitif Class Wrapper yang Sesuai  
Boolean Boolean
Char Character
Byte Byte
Short Short
Int Integer
Long Long
Float Float
Double Double
Tabel 1.3: Tipe data primitif dan class wrappernya yang sesuai
Nama-nama class wrapper cukup mudah untuk diingat  selama nama-nama itu sama 
dengan tipe data primitif. Dan juga sebagai catatan, bahwa class-class wrapper diawali 
dengan huruf besar dan versi yang ditunjukkan dari tipe data primitive.
Di bawah ini contoh penggunaan class wrapper untuk boolean.
class BooleanWrapper {
   public static void main(String args[]) {
      boolean booleanVar = 1>2;
      Boolean booleanObj = new Boolean("TRue");
/* primitif ke objek; dapat juga menggunakan method 
valueOf */
      Boolean booleanObj2 = new Boolean(booleanVar);
      System.out.println("booleanVar = " + booleanVar);
      System.out.println("booleanObj = " + booleanObj);
      System.out.println("booleanObj2 = " + booleanObj2);
      System.out.println("compare 2 wrapper objects: " + 
                              booleanObj.equals(booleanObj2));
      /* objek ke primitif */ 
      booleanVar = booleanObj.booleanValue();
      System.out.println("booleanVar = " + booleanVar);
   }
}
Pengenalan Pemrograman  2  9

4.5 Class Process dan Runtime 
4.5.1 Class Process 
class Process menyediakan method-method untuk memanipulasi proses-proses, seperti 
mematikan  proses,  menjalankan  proses  dan  mengecek  status  proses.  Class  ini 
merepresentasikan program- program yang berjalan.  Di  bawah ini  beberapa method 
pada class Process.
Method-Method Process 
public abstract void destroy() 
Mengakhiri proses.
public abstract int waitFor() throws InterruptedException
Tidak mengirim sampai proses yang dipanggil berakhir.
Tabel 1.4.1: Beberapa method dari class Process
4.5.2 Class Runtime 
Di sisi lain, class Runtime merepresentasikan lingkungan runtime. Dua method penting 
pada class Runtime adalah method getRuntime dan exec.
Method-Method Runtime 
public static Runtime getRuntime() 
Mengirim  objek  runtime  yang  merepresentasikan  lingkungan  runtime  yang 
berhubungan dengan  applikasi Java saat itu.
public Process exec(String command) throws IOException
Dikarenakan  command yang  dispesifikasikan  dieksekusi.  Memperbolehkan  Anda 
mengeksekusi proses baru.
Tabel 1.4.2: Beberapa method dari class Runtime
4.5.3 Membuka Registry Editor
Berikut program untuk membuka registry editor tanpa harus mengetikkan perintah dari 
command prompt.
class RuntimeDemo {
   public static void main(String args[]) {
      Runtime rt = Runtime.getRuntime();
      Process proc;
      try {
         proc = rt.exec("regedit");
         proc.waitFor(); //try removing this line
      } catch (Exception e) {
         System.out.println("regedit is an unknown command.");
Pengenalan Pemrograman  2  10

      }
   }
}
Gambar 1.4.3: Membuka registry editor
4.6 Class System 
Class System menyediakan beberapa field dan method bermanfaat,  seperti  standard 
input,  standard  output  dan  sebuah  method  yang  berguna  untuk  mempercepat 
pengkopian bagian sebuah array.  Di  bawah ini  beberapa method menarik  dari  class 
System. Sebagai catatan, bahwa semua method-method class adalah static
Method-Method System 
Public  static void arraycopy(Object src, int srcPos, Object dest, int 
destPos, int length) 
Mengkopi length elemen dari array src dimulai pada posisi srcPos ke dest yang dimulai 
pada indeks  destPos.  Lebih cepat daripada memprogram secara manual code untuk 
Anda sendiri.
Public static long currentTimeMillis() 
Waktu dispesifikasikan dalam GMT (Greenwich Mean Time) serta merupakan jumlah 
milidetik yang telah dilewati sejak tengan malam 1 Januari 1970. Waktu dalam ukuran 
milidetik.
Public static void exit(int status) 
Mematikan Java Virtual  Machine (JVM) yang sedang berjalan. Nilai  bukan nol untuk 
status konvensi yang mengindikasikan keluar yang abnormal.
Public static void gc() 
Menjalankan garbage collector,  yang mereklamasi  space memori  tak terpakai  untuk 
digunakan kembali.
Public static void setIn(InputStream in) 
Mengubah stream yang berhubungan dengan System.in, yang mana standart mengacu 
pada keyboard.
Public static void setOut(PrintStream out) 
Pengenalan Pemrograman  2  11

Method-Method System 
Mengubah  stream  yang  berhubungan  dengan  System.out,  yang  mana  standart 
mengacu pada console.
Tabel 1.5: Beberapa method dari class System
Ini adalah demo dari beberapa method-method tersebut.
import java.io.*;
class SystemDemo {
   public static void main(String args[]) throws IOException {
      int arr1[] = new int[1050000];
      int arr2[] = new int[1050000];
      long startTime, endTime;
      /* menginisialisasi arr1 */
      for (int i = 0; i < arr1.length; i++) {
         arr1[i] = i + 1;
      }
      /* mengkopi secara manual */
      startTime = System.currentTimeMillis();
      for (int i = 0; i < arr1.length; i++) {
         arr2[i] = arr1[i];
      }
      endTime = System.currentTimeMillis();
      System.out.println("Time for manual copy: " + 
                                (endTime-startTime) + " ms.");
      /* menggunakan utilitas copy yang disediakan oleh java – 
         yaitu method arraycopy */
      startTime = System.currentTimeMillis();
      System.arraycopy(arr1, 0, arr2, 0, arr1.length);
      endTime = System.currentTimeMillis();
      System.out.println("Time for manual copy: " + (endTime-
                                         startTime) + " ms.");
      System.gc(); //force garbage collector to work
      System.setIn(new FileInputStream("temp.txt"));
      System.exit(0);
   }
}