Tutorial Belajar Java Part 41: Pengertian Variable Scope

Pada tutorial kali ini kita akan mempelajari tentang konsep pemrograman Java yang dikenal sebagai Variable Scope dan juga tentang Local Variable.


Pengertian Variable Scope

Variable Scope (atau ruang lingkup variabel) adalah jangkauan kode program dimana perintah program masih bisa mengakses sebuah variabel.

Dalam bahasa Java, scope ini ditandai dengan karakter kurung kurawal "{ }". Jika sebuah variabel di definisikan di dalam tanda kurung kurawal atau dalam scopenya, kode program di luar itu tidak bisa mengakses variabel tersebut.

Scope ini berlalu di banyak tempat, seperti block kondisi if-else, perulangan, dan termasuk juga function / method. Selama dikurung oleh tanda kurung kurawal "{ }", maka itu adalah sebuah scope.

Berikut contoh kasusnya:

class BelajarJava {
  
  public static void main(String args[]) {
    String user = "admin";
    if (user == "admin") {
      String status = "Login berhasil";
    }
    System.out.println("Status = "+status);
  }
  
}

Pada baris 4, saya mengisi variabel user dengan string "admin". Lalu di baris berikutnya terdapat pemeriksaan kondisi apakah variabel user berisi string "admin" atau tidak. Jika iya, maka buat variabel status dan isi dengan string "Login Berhasil".

Kondisi if diatas akan bernilai true, dan variabel status akan dibuat. Akan tetapi begitu dijalankan, terjadi error berikut:

BelajarJava.java:8: error: cannot find symbol
  System.out.println("Status = "+status);
                                   ^
  symbol:   variable status
  location: class BelajarJava
1 error

Error ini tampil karena perintah System.out.println() di baris 8 tidak bisa mengakses variabel status, sebab variabel tersebut berada di scope yang berbeda.

Contoh lain, kode program berikut juga akan error:

class BelajarJava {
  
  static void setHarga() {
    int hargaCilok = 7000;
    System.out.println("Harga cilok sudah di set");
  }
  
  public static void main(String args[]){
    setHarga();
    System.out.println("Harga cilok 1 porsi Rp."+hargaCilok);
  }
  
}

Alasannya juga sama, perintah System.out.println() di baris 10 tidak bisa mengakses variabel hargaCilok karena variabel tersebut di definisikan di dalam scope fungsi setHarga().

Solusi dari masalah ini adalah dengan memindahkan deklarasi variabel tersebut ke luar scope.


Pengertian Local Variable

Sebuah variabel yang di deklarasikan di dalam scopenya sendiri, disebut sebagai local variable. Variabel tersebut hanya bisa diakses di dalam scope itu saja, tidak bisa dari luar scope. Dalam contoh sebelumnya, variabel status dan variabel hargaCilok adalah local variable.

Jika kita ingin agar variabel tersebut bisa diakses dari luar scope, pindahkan deklarasi variabel ke scope yang lebih luas. Untuk kasus if-else, solusinya bisa seperti ini:

class BelajarJava {
  
  public static void main(String args[]){
    String status = "";
    String user = "admin";
    
    if (user == "admin") {
      status = "Login berhasil";
    }
    System.out.println("Status = "+status);
  }
  
}

Hasil kode program:

Status = Login berhasil

Sekarang tidak lagi error dan perintah System.out.println() berhasil mengakses variabel status. Caranya, deklarasi variabel status dilakukan di baris 4, yakni dalam scope yang sama dengan perintah System.out.println().

Ketika sebuah variabel di deklarasikan, variabel itu akan bisa diakses dari dalam scopenya, dan juga scope yang lebih kecil.

Untuk kasus dengan function, solusinya juga sama, yakni pindahkan deklarasi variabel hargaCilok ke scope yang sama dengan perintah yang akan mengakses variabel tersebut:

class BelajarJava {
  
  static int hargaCilok;
  
  static void setHarga() {
    hargaCilok = 7000;
    System.out.println("Harga cilok sudah di set");
  }
  
  public static void main(String args[]){
    setHarga();
    System.out.println("Harga cilok 1 porsi Rp."+hargaCilok);
  }
  
}

Hasil kode program:

Harga cilok sudah di set
Harga cilok 1 porsi Rp.7000

Proses deklarasi variabel hargaCilok sekarang dilakukan di baris 3, sehingga bisa diakses dari dalam fungsi setHarga() dan juga perintah System.out.println() di baris 12.

Khusus untuk function (atau tepatnya static method), proses deklarasi variabel harus juga ditulis dengan keyword static. Lebih lanjut tentang fungsi keyword static ini akan kita bahas dalam tutorial terpisah (OOP Java).


Sebagai latihan, silahkan anda coba modif kode berikut agar tidak error dan variabel i bisa diakses di baris 9:

class BelajarJava {
  
  public static void main(String args[]){
    for (int i = 0; i < 5; i++) {
      System.out.println(i);
    }
 
    // Error
    System.out.println("Nilai i setelah loop: "+i);
  }
  
}

Yup, caranya adalah dengan membuat proses deklarasi variabel i di luar scopenya:

class BelajarJava {
  
  public static void main(String args[]){
	int i;
    for (i = 0; i < 5; i++) {
      System.out.println(i);
    }
 
    System.out.println("Nilai i setelah loop: "+i);
  }
  
}

Tutorial Belajar Java Pengertian Variable Scope


Itulah pembahasan kita tentang pengertian variable scope dan juga konsep local variabel. Scope ini berlaku di seluruh bagian kode program Java, termasuk suatu class juga menjadi scope terpisah.

Tutorial ini untuk sementara menutup seri Belajar Java di Duniailkom, atau lebih tepatnya tutorial belajar Java dasar. Karena kita akan lanjut ke materi tentang pemrograman object atau object oriented programming (OOP) bahasa Java.

Add Comment