[ HTML ] [ Java ] [ Bahasa C ]


Senin, Mei 03, 2021

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 tabel 1.

Tabel 1 Scope Variabel Java
ModifierPackageSubclassWorld
publicyesyesyes
protectedyesyesno
Defaul (no modifier)yesnono
privatenonono


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 ini?

// Scope pada bahasa

// pemrograman Java

public class Test

{

static int x = 11;

private int y = 33;

 

public void method1(int x)

{

Test t = new Test();

this.x = 22;

y = 44;

 

System.out.println("Test.x: " 

+ Test.x);

System.out.println("t.x: " 

+ t.x);

System.out.println("t.y: " 

+ t.y);

System.out.println("y: " 

+ y);

}

 

public static void main(String args[])

{

Test t = new Test();

t.method1(5);

}

 

}

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.

// Scope pada bahasa

// pemrograman Java

public class Test

{

 

public static void main(String args[])

{

 

{

// Variabel x berada dalam

// scope

 

// yang berada dalam tanda

// kurung kurawal

int x = 10;

System.out.println(x);

}

       

// Program ini akan

// menghasilkan error

 

// karena variabel x berada

// diluar scope

 

// System.out.println(x);

}

 

}

Output:
10

Contoh lain program menggunakan for loop (perulangan).

// Scope pada bahasa

// pemrograman Java

class Test

{

 

public static void main(String args[])

{

 

for (int x = 0; x < 4; x++){

System.out.println(x);}

 

// Akan menghasilkan error

System.out.println(x);

}

 

}

Output:
11: error: cannot find symbol
System.out.println(x); 

Koreksi dari kode program sebelumnya adalah:

// Scope pada bahasa

// pemrograman Java

 

// Program java setelah

// dilakukan koreksi program

class Test

{

public static void main(String args[])

{

 

int x;

for (x = 0; x < 4; x++)

{

System.out.println(x);

}

 

System.out.println(x);

}

 

}

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++.

// Scope pada bahasa

// pemrograman Java

class Test

{

 

public static void main(String args[])

{

 

int a = 5;

for (int a = 0; a < 5; a++)

{System.out.println(a);}

 

}

 

}

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.

// Scope pada bahasa

// pemrograman Java

class Test

{

 

public static void main(String args[])

{

 

{

int x = 5;

{

int x = 10;

System.out.println(x);

}

}

 

}

 

}


Dari penjelasan yang telah dipahami sebelumnya, perkirakan apakah kode program berikut dapat dijalankan atau tidak?

class Test {

 

public static void main(String args[])

{

 

for (int i = 1; i <= 10; i++

{System.out.println(i);}

 

int i = 20;

System.out.println(i);

 

}

 

}

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.

5 komentar:

  1. Apa yang dimaksud dengan cakupan pada bahasa pemrograman Java? apakah saja saja dengan scope?

    BalasHapus
    Balasan
    1. Cakupan atau scope (inggris) dalam bahasa pemrograman Java adalah wilayah program dimana suatu variabel yang dideklarasikan pada wilayah tersebut dapat diakses oleh program.

      Pada Java, scope variabel adalah suatu tubuh dari method yang digunakan untuk pendeklarasian variabel dan berupakan bentuk yang bersifat statis.

      Hapus
  2. Scope mengacu pada visibilitas dari suatu variabel pada bahasa pemrograman Java. Dengan kata lain, scope merupakan bagian dimana program dapat dilihat dan digunakan setelah scope tersebut didefinisikan.

    BalasHapus
  3. Apa yang dimaksud dengan akses default variabel terkait dengan penggunaan scope pada bahasa pemrograman Java?

    BalasHapus
    Balasan
    1. Akses default, artinya sebuah variabel akan memiliki suatu nilai akses otomatis ketika variabel tersebut dideklarasikan tanpa disertai deklarasi akses scopenya.

      Default akses, juga berarti bahwa variabel yang dideklarasikan tidak dinyatakan secara ekplisit akses deklarasinya dalam sebuah class pada Java.

      Hapus

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