Membuat Scope Variabel Java dan Fungsinya
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;
}
Dari contoh tersebut dapat dipahami bahwa:
- Class variabel dapat dideklarasikan dimanapun di dalam class, tetapi di luar method.
- Akses spesifik dari anggota variabel tidak berdampak pada scope dari anggota variabel di dalam class.
- Anggota variabel dapat mengakses class dari luar dengan beberapa ketentuan berikut seperti pada tabel 1.
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;
}
}
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);
}
}
t.x: 22
t.y: 33
y: 44
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);
}
}
Contoh: 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);
}
}
System.out.println(x);
Contoh: 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);
}
}
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);}
}
}
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.
Contoh: 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);
}
}
}
}
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);
}
}
2
3
4
5
6
7
8
9
10
20
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:
- Secara umum, tanda "{" dan "}" digunakan untuk mendefinisikan scope.
- 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).
- Segala jenis variabel yang dideklarasikan di luar dari method dapat digunakan oleh semua anggota method lainnya.
- Ketika method memiliki variabel lokal yang sama dengan anggota method, maka keyword tersebut dapat digunakan sebagai referensi dari variabel class pada saat itu.
- Untuk variabel yang akan dibaca setelah looping berakhir, maka variabel tersebut harus dideklarasikan kembali.
- 4 Kendala Penggunaan For Each Loop pada Java [klik]
- 5 Ciri Khas Utama For Loop pada Java [klik]
- 6 Aturan Penting Switch Statement pada Java [klik]
- 4 Poin Utama Penggunaan String Switch Case pada Java [klik]
- Cara Sederhana Forward Deklarasi Java [klik]
- 5 Cara Konversi Tipe Data pada Java [klik]
- 2 Contoh Perluasan Konversi Tipe Data Primitif pada Java [klik]
Apa yang dimaksud dengan cakupan pada bahasa pemrograman Java? apakah saja saja dengan scope?
BalasHapusCakupan atau scope (inggris) dalam bahasa pemrograman Java adalah wilayah program dimana suatu variabel yang dideklarasikan pada wilayah tersebut dapat diakses oleh program.
HapusPada Java, scope variabel adalah suatu tubuh dari method yang digunakan untuk pendeklarasian variabel dan berupakan bentuk yang bersifat statis.
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.
BalasHapusApa yang dimaksud dengan akses default variabel terkait dengan penggunaan scope pada bahasa pemrograman Java?
BalasHapusAkses default, artinya sebuah variabel akan memiliki suatu nilai akses otomatis ketika variabel tersebut dideklarasikan tanpa disertai deklarasi akses scopenya.
HapusDefault akses, juga berarti bahwa variabel yang dideklarasikan tidak dinyatakan secara ekplisit akses deklarasinya dalam sebuah class pada Java.