1. Pembolehubah setempat

Mari kita bercakap lebih serius tentang pembolehubah. Tetapi kali ini kita tidak akan membincangkan struktur dalaman mereka. Sebaliknya, kami akan menumpukan pada cara pembolehubah berinteraksi dengan kod di mana ia berada.

Semua pembolehubah yang diisytiharkan di dalam kaedah dipanggil pembolehubah tempatan . Pembolehubah tempatan hanya wujud dalam blok kod di mana ia diisytiharkan. Atau, untuk lebih tepat, ia wujud dari saat ia diisytiharkan sehingga penghujung blok kod di mana ia diisytiharkan.

Untuk kesederhanaan, mari kita pertimbangkan contoh:

Kod Keterlihatan berubah-ubah
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 bercakap tentang mengakses pembolehubah tempatan sekali lagi. Berikut ialah blok kod yang terdiri daripada pendakap kerinting: ini boleh menjadi badan kaedah, badan gelung atau hanya blok kod untuk pernyataan bersyarat. Pembolehubah yang diisytiharkan dalam blok kod wujud sehingga penghujung blok kod itu.

Jika pembolehubah diisytiharkan dalam badan gelung, maka ia akan wujud hanya dalam badan gelung. Ia dicipta dan dimusnahkan pada setiap lelaran gelung.

Anda tidak boleh mengisytiharkan dua pembolehubah tempatan dengan nama yang sama dalam satu kaedah — program tidak akan disusun. Tetapi anda boleh melakukan ini jika blok kod di mana pembolehubah diisytiharkan tidak bertindih.

Contoh:

Kod Keterlihatan berubah-ubah
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 mengisytiharkan pembolehubah tempatan kedua yang dinamakan b hanya kerana pembolehubah pertama b tidak kelihatan dalam blok kod di mana bpembolehubah kedua diisytiharkan.


2. Parameter

Seperti yang kita katakan sebelum ini, setiap kaedah boleh mempunyai pembolehubah yang kita panggil parameter. Bagaimana dengan keterlihatan dan seumur hidup mereka?

Semuanya mudah. Parameter dicipta apabila pelaksanaan melangkah ke dalam kaedah (iaitu apabila kod kaedah mula dilaksanakan). Mereka dihapuskan apabila kaedah tamat. Mereka kelihatan di seluruh badan kaedah.

Contoh:

Kod Keterlihatan berubah-ubah
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 kita katakan sebelum ini, argshanyalah pembolehubah yang jenisnya ialah tatasusunan rentetan. Dan seperti semua parameter, ia tersedia di mana-mana dalam badan kaedah. Yang berkata, kami biasanya mengabaikannya dalam contoh kami.



3. Pembolehubah dalam kelas

Anda akan ingat daripada pelajaran di Tahap 1 bahawa kelas boleh mempunyai kaedah dan pembolehubah. Kaedah kadangkala dipanggil kaedah contoh, dan pembolehubah - pembolehubah atau medan contoh. Ini sebenarnya sinonim dalam Java.

Apakah pembolehubah (atau medan) kelas?

Mereka adalah pembolehubah yang diisytiharkan bukan dalam kaedah, tetapi dalam kelas.

Mereka boleh diakses daripada mana-mana kaedah (bukan statik) kelas. Secara kasarnya, pembolehubah contoh ialah pembolehubah yang dikongsi oleh semua kaedah kelas.

Contoh:

Kod Keterlihatan berubah-ubah
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 mempunyai dua kaedah — add()dan remove(). Kaedah add()menambah pembolehubah sumdan countcontoh, dan remove()kaedah mengurangkan pembolehubah sum dan count. Kedua-dua kaedah berfungsi pada pembolehubah contoh yang dikongsi.

Pembolehubah tempatan wujud semasa kaedah sedang dilaksanakan. Pembolehubah contoh kelas wujud dalam objek kelas selagi objek itu wujud. Anda akan mempelajari butiran tentang objek kelas di peringkat seterusnya.


4. Pembolehubah statik

Seperti kaedah, pembolehubah dalam kelas boleh statik atau tidak statik. Kaedah statik hanya boleh mengakses pembolehubah statik.

Dalam Tahap 11, kami akan menganalisis struktur pembolehubah statik dan kaedah dan anda akan memahami sebab sekatan ini.

Untuk membuat pembolehubah statik (pembolehubah kelas), anda mesti menulis statickata kunci dalam pengisytiharannya.

Pembolehubah statik tidak terikat pada objek atau contoh kelas di mana ia diisytiharkan. Sebaliknya, mereka tergolong dalam kelas itu sendiri. Itulah sebabnya mereka wujud walaupun tidak satu pun objek kelas telah dicipta . Anda boleh merujuknya dari kelas lain menggunakan konstruk seperti:

ClassName.variableName

Contoh:

Kod Keterlihatan berubah-ubah
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 mencipta Storagekelas berasingan, memindahkan count dan sum pembolehubah ke dalamnya, dan mengisytiharkannya statik . Pembolehubah statik awam boleh diakses daripada sebarang kaedah dalam program (dan bukan sahaja dari kaedah).