1. Variabel lokal

Mari kita bicara lebih serius tentang variabel. Namun kali ini kita tidak akan membahas struktur internal mereka. Sebagai gantinya, kita akan fokus pada bagaimana variabel berinteraksi dengan kode di mana mereka berada.

Semua variabel yang dideklarasikan di dalam metode disebut variabel lokal . Variabel lokal hanya ada di blok kode yang dideklarasikan. Atau, lebih tepatnya, itu ada dari saat dideklarasikan hingga akhir blok kode yang dideklarasikan.

Untuk kesederhanaan, mari kita pertimbangkan sebuah contoh:

Kode Visibilitas variabel
public static void main(String[] args)
{
   int a = 5;
   if (a < 10)
   {
     int b = 10;
     while (true)
     {
       int x = a + b;
       System.out.println(x);
     }
     System.out.println(b);
   }

}


a
a
a
a, b
a, b
a, b
a, b, x
a, b, x
a, b
a, b
a
a

Mari kita bicara tentang mengakses variabel lokal sekali lagi. Berikut adalah blok kode yang terdiri dari kurung kurawal: ini bisa berupa badan metode, badan loop, atau hanya blok kode untuk pernyataan bersyarat. Variabel yang dideklarasikan dalam blok kode ada hingga akhir blok kode itu.

Jika sebuah variabel dideklarasikan di dalam tubuh perulangan, maka variabel itu hanya akan ada di dalam tubuh perulangan. Itu dibuat dan dihancurkan di setiap iterasi loop.

Anda tidak dapat mendeklarasikan dua variabel lokal dengan nama yang sama dalam satu metode — program tidak dapat dikompilasi. Tapi Anda bisa melakukan ini jika blok kode tempat variabel dideklarasikan tidak tumpang tindih.

Contoh:

Kode Visibilitas variabel
public static void main(String[] args)
{
   int a = 5;
   if (a < 10)
   {
     int b = 10;
     System.out.println(b);
   }

   if (a < 20)
   {
     int b = 20;
     System.out.println(b);
   }
}


a
a
a
a, b
a, b
a
a
a
a
a, b
a, b
a

Kami dapat mendeklarasikan variabel lokal kedua b hanya karena variabel pertama b tidak terlihat di blok kode tempat bvariabel kedua dideklarasikan.


2. Parameter

Seperti yang kami katakan sebelumnya, setiap metode dapat memiliki variabel yang kami sebut parameter. Bagaimana dengan visibilitas dan masa hidup mereka?

Semuanya mudah. Parameter dibuat saat langkah-langkah eksekusi ke dalam metode (yaitu saat kode metode mulai dijalankan). Mereka dihilangkan ketika metode berakhir. Mereka terlihat di seluruh tubuh metode.

Contoh:

Kode Visibilitas variabel
public static void main(String[] args)
{
   int a = 5;
   if (a < 10)
   {
     int b = 10;
     while (true)
     {
       int x = a + b;
       System.out.println(x);
     }
     System.out.println(b);
   }

}

args
args, a
args, a
args, a
args, a, b
args, a, b
args, a, b
args, a, b, x
args, a, b, x
args, a, b
args, a, b
args, a
args, a

Seperti yang kami katakan sebelumnya, argshanya sebuah variabel yang jenisnya adalah array dari string. Dan seperti semua parameter, ini tersedia di mana saja di dalam tubuh metode. Meskipun demikian, kami biasanya mengabaikannya dalam contoh kami.



3. Variabel dalam sebuah kelas

Anda akan ingat dari pelajaran di Level 1 bahwa kelas dapat memiliki metode dan variabel. Metode terkadang disebut metode instan, dan variabel — variabel instan atau bidang. Ini sebenarnya sinonim di Jawa.

Apa variabel (atau bidang) dari kelas?

Mereka adalah variabel yang dideklarasikan bukan dalam metode, tetapi dalam kelas.

Mereka dapat diakses dari metode kelas apa pun (non-statis). Secara kasar, variabel instan adalah variabel yang digunakan bersama oleh semua metode kelas.

Contoh:

Kode Visibilitas variabel
public class Solution
{
   public int count = 0;
   public int sum = 0;

   public void add(int data)
   {
     sum = sum + data;
     count++;
   }

   public void remove(int data)
   {
     sum = sum - data;
     count--;
   }
}


count
count, sum
count, sum
count, sum
count, sum, data
count, sum, data
count, sum, data
count, sum
count, sum
count, sum
count, sum, data
count, sum, data
count, sum, data
count, sum
count, sum

Dalam contoh ini, kami memiliki dua metode — add()dan remove(). Metode ini add()menambah variabel sumdan countcontoh, dan remove()metode ini mengurangi variabel sum dan count. Kedua metode bekerja pada variabel instan bersama.

Variabel lokal ada saat metode dieksekusi. Variabel instan kelas ada di dalam objek kelas selama objek itu ada . Anda akan mempelajari detail tentang objek kelas di level berikutnya.


4. Variabel statis

Seperti metode, variabel dalam kelas bisa statis atau non-statis. Metode statis hanya dapat mengakses variabel statis.

Di Level 11, kita akan menganalisis struktur variabel dan metode statis dan Anda akan memahami alasan pembatasan ini.

Untuk membuat variabel statis (variabel kelas), Anda harus menulis statickata kunci dalam deklarasinya.

Variabel statis tidak terikat pada objek atau instance kelas tempat mereka dideklarasikan. Sebaliknya, mereka milik kelas itu sendiri. Itu sebabnya mereka ada bahkan jika tidak ada satu pun objek kelas yang dibuat . Anda dapat merujuknya dari kelas lain menggunakan konstruksi seperti:

ClassName.variableName

Contoh:

Kode Visibilitas variabel
public class Solution
{
   public void add(int data)
   {
     Storage.sum = Storage.sum + data;
     Storage.count++;
   }

   public void remove(int data)
   {
     Storage.sum = Storage.sum - data;
     Storage.count--;
   }
}

public class Storage
{
   public static int count = 0;
   public static int sum = 0;
}

Storage.count, Storage.sum
Storage.count, Storage.sum
Storage.count, Storage.sum, data
Storage.count, Storage.sum, data
Storage.count, Storage.sum, data
Storage.count, Storage.sum
Storage.count, Storage.sum
Storage.count, Storage.sum
Storage.count, Storage.sum, data
Storage.count, Storage.sum, data
Storage.count, Storage.sum, data
Storage.count, Storage.sum



Storage.count, Storage.sum
Storage.count, Storage.sum
Storage.count, Storage.sum

Dalam contoh di atas, kami membuat Storagekelas terpisah, memindahkan variabel count and sum ke dalamnya, dan mendeklarasikannya static . Variabel statis publik dapat diakses dari metode apa pun dalam suatu program (dan tidak hanya dari metode).