Sekilas Mengenai Bahasa Java


Beberapa hari terakhir ini, aku sering mengikuti test technical yang berkaitan dengan Java. Sebagai persiapan,
aku membaca ulang lagi topik-topik tentang bahasa pemograman Java. Maklum saja, kebanyakan pertanyaan dalam
test masuk adalah pertanyaan dasar yang harus dikerjakan dalam waktu singkat. Aku akan menuliskan beberapa hal
yang jarang aku pakai di Java dan yang belum ada di Java saat aku mempelajarinya dulu.

Salah satu calon pertanyaan yang mungkin bisa mengecoh adalah apakah syntax berikut valid?

instanceB = instanceA.new classB();

Jika dilihat sekilas, bentuk syntax di atas sangat tidak lazim, sepertinya syntax tersebut tidak valid? Tapi
sebenarnya, syntax tersebut sah untuk membuat instance dari inner class, dimana lengkapnya berupa:

public class Latihan {

	public static void main(String[] args) {
		ClassA instanceA = new ClassA();
		ClassA.ClassB instanceB = instanceA.new ClassB();
		instanceB.cetak();
	}

}

class ClassA {
	
	public class ClassB {
		public void cetak() {
			System.out.println("TEST");
		}
	}
	
}

Untungnya, selama ini, aku belum menemukan test technical yang memberikan soal seperti itu. Berikutnya, aku
menemukan sesuatu yang mirip seperti printf() di C/C++, yaitu System.out.format.
Berikut ini adalah contoh penggunaannya:

System.out.format("Selamat datang %s.%nHari ini tanggal %2$td-%2$tm-%2$tY", 
  "Solid Snake", new java.util.Date());

yang akan menghasilkan keluaran seperti:

Selamat datang Solid Snake.
Hari ini tanggal 09-05-2009

Terlihat sedikit lebih canggih dibanding printf() karena dapat men-format tanggal secara langsung.
Masih berhubungan dengan formatting, yaitu class DecimalFormat yang dapat dipergunakan untuk
men-format bilangan desimal, seperti pada contoh:

DecimalFormat decimalFormat = new DecimalFormat();
decimalFormat.setMaximumFractionDigits(2);
decimalFormat.setNegativePrefix("(");
decimalFormat.setNegativeSuffix(")");
decimalFormat.setRoundingMode(RoundingMode.DOWN);

System.out.println(decimalFormat.format(543553.3433));
System.out.println(decimalFormat.format(-543434.3));

Hasil keluaran dari program di atas terlihat seperti:

543.553,34
(543.434,3)

Ada sebuah class yang mempermudah parsing tanpa harus membuat regex secara manual, yaitu Scanner. Sebagai contoh,
aku membuat program sederhana yang membaca sebuah file TXT, lalu menjumlahkan semua bilangan integer yang
ada dalam file tersebut. Misalnya, isi file tersebut adalah:

#ini adalah file latihan
#untuk menggunakan scanner
#
10 # test angka sepuluh
30 # test angka tiga puluh
50

Kode program yang aku buat adalah:

fis = new FileInputStream("C:\\test.txt");
Scanner scanner = new Scanner(fis);
int total = 0;
while (scanner.hasNext()) {
	if (scanner.hasNextInt()) {
		total += scanner.nextInt();
	} else {
		scanner.next();
	}
}
System.out.println("Hasil jumlah bilangan integer yang ada = " + total);

Kode di atas terlihat ringkas bukan? Parsing kini menjadi kerjaan mudah dengan bantuan Scanner.
Contoh output program di atas seperti:

Hasil jumlah bilangan integer yang ada = 90

Masih ingat pengalaman pertama kali belajar Java? Kebanyakan buku-buku teks Java pada saat aku masih belajar Java
menunda pembahasan mengenai input dari keyboard. Alasannya adalah Java tidak menyediakan cara gampang untuk
membaca dari keyboard tanpa harus mengerti konsep stream (System.in). Dan sekarang, aku
menemukan sebuah class Console (baru sejak versi 1.6) untuk menangani input dari console.
Berikut ini adalah contoh penggunaannya:

Console console = System.console();
if (console==null) {
	System.out.println("System Anda tidak mendukung input console");
} else {
	System.out.println("Masukkan nama Anda: ");
	String nama = console.readLine();
	System.out.println("Masukkan password Anda: ");
	char[] password = console.readPassword();
	String strPassword = new String(password);
	if (strPassword.equals("SOLIDSNAKE")) {
		System.out.println("Password Anda benar!");
	} else {
		System.out.println("Password Anda salah!");
	}
}

Salah satu alasan Java tidak menyertakan Console dari awal adalah tidak semua platform mendukung
input dari keyboard. Jika kondisi tidak memungkinkan untuk menerima input dari keyboard, misalnya saat
menjalankan program di atas melalui Eclipse, System.console() akan bernilai null.
Untuk mencoba program di-atas, aku menjalankannya melalui Command Prompt. O ya, pada saat readPassword()

dipanggil, input dari keyboard tidak akan ditampilkan (di-echo) ke layar.

Perihal Solid Snake
I'm nothing...

One Response to Sekilas Mengenai Bahasa Java

Apa komentar Anda?

Please log in using one of these methods to post your comment:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: