Just curious about code – Static Block Java


Sekedar iseng dan penasaran dengan code java di soal UTS pemrograman II dulu. Percobaan iseng kali ini melibatkan fungsi java tanpa nama. Bagaimana ceritanya tanpa nama? ok perhatikan kelas sederhana  berikut :

class A{
	{
		System.out.println("Saya Ilkom Kelas A");
	}

}

Tanpa mencobanya, kira-kira anda menebak code diatas bisa jalan dikompile tanpa error atau tidak?


Jika anda menebak bisa dikompile tanpa error berarti tebakan anda benar. Namun apa yang dihasilkan dari code sederhana tersebut. Mari kita test menggunakan kelas Test berikut:

public class Test{
	{ System.out.println("Aku ganteng");}

	private void tampil(){
		System.out.println("Nama saya Lutfi");
	}

	public static void main(String [] args){
		//Test test = new Test();
		//test.tampil();
		A a = new A();
		//B b = new B();
	}
}

Hasilnya seperti yang ditampilkan pada Gambar 1 dibawah ini.

Gambar 1

Dari hasil tersebut awalnya saya juga heran, kemudian muncul pertanyaan bagaimana jika ada konstruktor dan method lain dalam kelas A yang mengandung code gundul tadi.  Ok deh langsung dicoba dengan perubahan kelas A dan Test menjadi seperti berikut

class A{
	{
		System.out.println("Saya Ilkom Kelas A");
	}
	public void tampil(){
		System.out.println("Saya juga Ilkom Kelas A, muncul setelah method tampil() dijalankan");
	}

	public A(){
		System.out.println("Saya juga Ilkom Kelas A, saya lahir di konstruktor");
	}
}

public class Test{
	public static void main(String [] args){
		A a = new A();
		a.tampil();
	}
}

Dan hasil running programnya ditunjukkan pada Gambar 2 sebagai berikut

Gambar 2

Ternyata code gundul tanpa nama tadi dijalankan terlebih dahulu sebelum konstruktor dijalankan, kemudian yang terakhir dijalankan adalah method tampil. Dengan begini sudah terjawab sedikit pertanyaan saya. Tetapi masih penasaran juga blok yang hanya terdiri dari kurung kurawal dan method tersebut namanya apa? Hmm…setelah googling akhirnya ketemu juga. Blok code seperti diatas dinamakan static block. Static block adalah sekumpulan perintah-perintah dalam java yang akan dijalankan terlebih dahulu ketika suatu class di load didalam Java Virtual Machine. Akhirnya terjawab juga sedikit rasa penasaran saya. :D 

Referensi: Soal UTS Pemrograman II tahun 2010 Ilmu Komputer Univ. Brawijaya Malang, dosennya Bu Chandra.😀

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s