Variabel lokal

"Salam, muridku tercinta! Sudah waktunya untuk sedikit lebih serius tentang variabel. Tapi 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, ada dari saat dideklarasikan hingga akhir blok kode di mana ia dideklarasikan."

"Jelas, saya butuh contoh."

"Tidak masalah. Ini dia:

Kode Ketersediaan 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 bahas aturan untuk mengakses variabel lokal sekali lagi. Ini blok kode. Apa yang menandai awal dan akhirnya?"

"Kurung kurawal?"

"Benar. 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. Katakan padaku, di mana akan variabel ada jika dideklarasikan dalam tubuh loop?"

"Itu hanya akan ada di badan loop."

"Betul. Terlebih lagi, itu akan dibuat dan dihancurkan pada setiap iterasi dari loop."

"Itu berarti bahwa Anda tidak dapat mendeklarasikan dua variabel lokal dengan nama yang sama dalam satu metode — program tidak dapat dikompilasi. Tetapi Anda dapat melakukan ini jika blok kode tempat variabel dideklarasikan tidak tumpang tindih. "

"Ada alasan kenapa kau jadi favoritku, Amigo. Ambil satu contoh lagi untuk memantapkan ini di otakmu.

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 nama variabel lokal kedua bhanya karena variabel pertama btidak terlihat di blok kode tempat bvariabel kedua dideklarasikan.

Parameter

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

"Hmm... aku bingung..."

"Semuanya cukup sederhana di sini. Parameter dibuat saat langkah-langkah eksekusi ke dalam metode (yaitu saat kode dari metode mulai dijalankan). Mereka dihilangkan saat metode berakhir."

"Dengan kata lain, mereka terlihat di seluruh tubuh metode dan hanya di sana?"

"Ya. 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 variabel yang tipenya adalah array string. Dan seperti semua parameter, ini tersedia di mana saja di dalam tubuh metode. Yang mengatakan, kami biasanya mengabaikannya dalam contoh kami.

Variabel dalam sebuah kelas

"Ingat pelajaran di Level 1, di mana kita mengatakan bahwa kelas dapat memiliki metode dan variabel. Metode terkadang disebut metode instan, dan variabel — variabel instan atau bidang.

"Apa variabel (atau bidang) dari suatu kelas ?

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

"Dan untuk apa mereka di sana?"

"Sebagai permulaan, mereka dapat diakses dari metode kelas (non-statis) apa pun. 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, kita memiliki dua metode — add()dan remove(). add()Metode ini menambah variabel instan sumdan count, dan remove()metode menurunkan variabel sumdan count. Kedua metode bekerja pada variabel instan bersama."

"Saya mengerti semuanya! Variabel lokal ada saat sebuah metode dieksekusi. Variabel instan dari sebuah kelas ada di dalam sebuah objek dari sebuah kelas selama objek itu ada."

"Bagus, Amigo. Kami telah meletakkan beberapa dasar, dan Anda akan mempelajari detail tentang objek kelas di tingkat berikutnya.

Variabel statis

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

"Saya belum memiliki pemahaman yang jelas tentang variabel statis."

"Oh, aku tahu, tapi jangan khawatir. Untuk saat ini, biasakan saja dengan mereka. Kenali mereka. Di Level 11, kita akan menganalisis struktur variabel dan metode statis dan kamu akan memahami alasannya. pembatasan.

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

"Variabel statis tidak terikat pada objek atau turunan dari kelas di mana mereka dideklarasikan. Sebaliknya, mereka milik kelas itu sendiri. Itu sebabnya mereka ada bahkan jika tidak ada satu pun objek dari kelas yang telah dibuat . Anda dapat merujuk ke mereka dari kelas lain menggunakan konstruk 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 countand sumke dalamnya, dan mendeklarasikannya static . Variabel statis publik dapat diakses dari metode apa pun dalam program (dan tidak hanya dari metode)."

"Aku tidak sepenuhnya mengerti, tapi ini sepertinya nyaman bagiku."

"Begitulah. Dan terkadang itu perlu. Tanpa variabel dan metode statis kita akan mandek."

"Mudah-mudahan, aku perlahan bisa mengetahuinya."

"Ya, tentu saja."