Rabu, Maret 13, 2019

Scope Variabel Pada Java

Scope variabel adalah bagian dari program dimana variabel diakses. Seperti bahasa pemrograman C atau C++, pada program Java semua identifier adalah lexical (atau static) scope, yaitu scope dari variabel yang dapat ditentukan pada waktu kompilasi, dan juga bersifat independent dari fungsi call stack. Java program diorganisir dalam form class. Setiap class pada Java adalah bagian dari beberapa package. Java scope dapat mengorganisir dalam beberapa kategori berikut.

Anggota Variabel (class level scope)
Jenis variabel ini harus dideklarasikan di dalam kelas (diluar dari fungsi apapun). Variabel ini dapat diakses secara langsung dimanapun class berada. Perhatikan contoh berikut ini:

public class Test
{
/* Semua variabel didefinisikan secara langsung di dalam class adalah bagian dari variabel */ 
int a;
private String b
void method1() {....}
int method2() {....}
char c;
}

satu, Class variabel dapat dideklarasikan dimanapun di dalam class, tetapi di luar method.
dua, Akses spesifik dari anggota variabel tidak berdampak pada scope dari anggota variabel di dalam class.
tiga, Anggota variabel dapat mengakses class dari luar dengan beberapa ketentuan berikut seperti pada gambar 1.

akses scope pada bahasa pemrograman Java
Gambar 1 akses scope
sumber : geeksforgeeks.org

Variabel lokal (Method level scope)
Variabel yang dideklarasikan di dalam method memiliki scope pada level method dan tidak dapat diakses dari luar method.

public class Test
{
void method1() 
{
/* variabel lokal (Method level scope) */
int x;
}
}

catatan: Variabel lokal tidak akan muncul setelah method selesai dieksekusi.
Berikut beberapa contoh dari scope method, variabel diteruskan sebagai parameter pada method.

class Test
{
private int x;
public void setX(int x)
{
this.x = x;
}
}

Kode proram yang dijelaskan sebelumnya menggunakan keyword this untuk membedakan antara variabel lokal dan class variabel.

Perkiraan output dari kode program berikut init?
Output:
Test.x: 22
t.x: 22
t.y: 33
y: 44

Loop variabel (block scope)
Sebuah variabel dideklarasikan di dalam sepasang tanda kurung "{" dan "}" pada method yang memiliki scope diantara tanda tersebut.
Output:
10

Contoh lain program menggunakan for loop (perulangan).
Output:
11: error: cannot find symbol
        System.out.println(x); 

Koreksi dari kode program sebelumnya adalah:
Output:
0
1
2
3
4

Berikut adalah contoh program yang sedikit mengecoh. Perkirakan hasil yang akan keluar dari program berikut. Hasilnya akan berbeda jika program tersebut dibuat dalam bahasa C atau C++.
Output:
6: error: variable a is already defined in method go(int)
       for (int a = 0; a < 5; a++)       
                ^
1 error

catatan: Jika bentuk algoritma dari program sebelumnya dibuat dalam bahasa C atau C++ maka program dapat dijalankan. Tetapi, jika algoritma tersebut dibuat dalam bahasa Java maka akan menampilkan pesan error. Karena,  pada Java sistem penamaan variabel di luar dan di dalam loop harus berbeda.

Sebagai latihan, perkirakan hasil output dari kode program berikut ini.


Dari penjelasan yang telah dipahami sebelumnya, perkirakan apakah kode program berikut dapat dijalankan atau tidak?
Output:
1
2
3
4
5
6
7
8
9
10
20

Yups, jawabannya dapat dijalankan!
Perhatikan program tersebut, inner loop akan dimatikan sebelum variabel outer loop dideklarasikan. Jadi, variabel inner loop akan hilang terlebih dahulu dan digantikan dengan nilai variabel yang baru dengan nama variabel yang sama seperti yang telah dideklarasikan sebelumnya.

Beberapa poin penting mengenai scope variabel pada Java:
satu, Secara umum, tanda "{" dan "}" digunakan untuk mendefinisikan scope.
dua, Pada Java, variabel dapat diakses selama variabel tersebut didefinisikan di dalam tanda "{" dan "}" atau didalamnya lagi dari tanda "{" dan "}" dimana variabel didefinisikan (kurung di dalam kurung).
tiga, Segala jenis variabel yang dideklarasikan di luar dari method dapat digunakan oleh semua anggota method lainnya.
empat, Ketika method memiliki variabel lokal yang sama dengan anggota method, maka keyword tersebut dapat digunakan sebagai referensi dari variabel class pada saat itu.
lima, Untuk variabel yang akan dibaca setelah looping berakhir, maka variabel tersebut harus dideklarasikan kembali.

Tidak ada komentar:

Posting Komentar

Respon komentar 7 x 24 jam, so please be patient :D

Footer Adsense