Yerel değişkenler

"Merhaba sevgili öğrencim! Değişkenleri biraz daha ciddiye almanın zamanı geldi. Ama bu kez iç yapılarından bahsetmeyeceğiz. Bunun yerine, değişkenlerin bulundukları yerde kodla nasıl etkileşime girdiğine odaklanacağız.

"Yöntemler içinde bildirilen tüm değişkenlere yerel değişkenler denir . Yerel bir değişken yalnızca bildirildiği kod bloğunda bulunur. Daha doğrusu, bildirildiği andan bloğun sonuna kadar vardır. bildirildiği kodun."

"Açıkçası, bir örneğe ihtiyacım var."

"Sorun değil. Buyrun:

kod Değişken kullanılabilirlik
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

"Yerel değişkenlere erişim kurallarını bir kez daha gözden geçirelim. İşte bir kod bloğu. Başlangıcını ve sonunu belirleyen nedir?"

"Kıvırcık diş telleri mi?"

"Doğru. Bu bir yöntem gövdesi, bir döngü gövdesi veya yalnızca koşullu bir ifade için bir kod bloğu olabilir. Bir kod bloğunda bildirilen bir değişken, o kod bloğunun sonuna kadar vardır. Söyle bana, nerede olacak? bir döngü gövdesinde bildirilmişse bir değişken var mı?"

"Yalnızca döngünün gövdesinde var olacak."

"Bu doğru. Dahası, döngünün her yinelemesinde yaratılacak ve yok edilecek."

"Bu, aynı ada sahip iki yerel değişkeni tek bir yöntemde bildiremeyeceğiniz anlamına gelir ; program derlenmez. Ancak bunu, değişkenlerin bildirildiği kod blokları çakışmazsa yapabilirsiniz. "

"Favorim olman için bir neden var, Amigo. Bunu beyninde sağlamlaştırmak için bir örnek daha al.

kod Değişken görünürlük
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

b" Yalnızca birinci değişken, ikinci değişkenin bildirildiği bkod bloğunda görünmediği için, ikinci bir yerel değişkeni adlandırabildik .b

parametreler

"Daha önce de söylediğimiz gibi, her yöntemin parametre dediğimiz değişkenleri olabilir. Peki ya görünürlükleri ve ömürleri?"

"Hmm... Şaşkına döndüm..."

"Burada her şey çok basit. Parametreler, metoda adım atıldığında (yani metodun kodu çalışmaya başladığında) oluşturulur. Metot bitince yok olurlar."

"Başka bir deyişle, yöntemin tüm gövdesinde ve yalnızca orada mı görünüyorlar?"

"Evet. Örnek:

kod Değişken görünürlük
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

"Daha önce de söylediğimiz gibi, argstürü bir dizi dizi olan bir değişkendir. Ve tüm parametreler gibi, yöntemin gövdesi içinde her yerde kullanılabilir. Bununla birlikte, örneklerimizde genellikle onu görmezden geliriz.

Bir sınıftaki değişkenler

"Bir sınıfın yöntemleri ve değişkenleri olabileceğini söylediğimiz 1. Düzeydeki dersleri hatırlayın. Yöntemlere bazen örnek yöntemler ve değişkenler - örnek değişkenler veya alanlar denir.

"Bir sınıfın değişkenleri (veya alanları) nelerdir ?

Bir yöntemde değil, bir sınıfta bildirilen değişkenlerdir."

"Peki ne için oradalar?"

"Yeni başlayanlar için, bir sınıfın herhangi bir (statik olmayan) yönteminden erişilebilirler. Kabaca, örnek değişkenler , bir sınıfın tüm yöntemleri tarafından paylaşılan değişkenlerdir.

Örnek:

kod Değişken görünürlük
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

"Bu örnekte iki yöntemimiz var - add()ve remove(). add()Yöntem sumve countörnek değişkenlerini artırır ve yöntem ve değişkenlerini remove()azaltır . Her iki yöntem de paylaşılan örnek değişkenleri üzerinde çalışır."sumcount

"Hepsini anlıyorum! Bir yöntem yürütülürken yerel değişkenler var. Bir sınıfın örnek değişkenleri , bir sınıfın nesnesi içinde, o nesne var olduğu sürece var olur."

"Aferin Amigo. Bazı temelleri attık ve bir sonraki seviyede bir sınıfın nesneleri hakkında ayrıntıları öğreneceksin.

statik değişkenler

"Metotlar gibi, bir sınıftaki değişkenler statik olabilir veya statik olmayabilir. Statik yöntemler yalnızca statik değişkenlere erişebilir.

"Henüz statik değişkenler hakkında net bir anlayışa sahip değilim."

"Ah, biliyorum ama merak etme. Şimdilik bunlarla rahat ol. Onlara aşina ol. Seviye 11'de statik değişkenlerin ve yöntemlerin yapısını inceleyeceğiz ve bunların nedenlerini anlayacaksın. kısıtlamalar.

static"Statik bir değişken (sınıf değişkeni) yapmak için, anahtar kelimeyi bildirimine yazmalısınız .

"Statik değişkenler, tanımlandıkları sınıfın bir nesnesine veya örneğine bağlı değildirler. Bunun yerine, sınıfın kendisine aittirler. Bu nedenle, sınıfın tek bir nesnesi oluşturulmamış olsa bile var olurlar . aşağıdaki gibi bir yapı kullanarak diğer sınıflardan onları:

ClassName.variableName

Örnek:

kod Değişken görünürlük
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

"Yukarıdaki örnekte, ayrı bir Storagesınıf oluşturduk, countve sumdeğişkenlerini buna taşıdık ve onları static ilan ettik . Genel statik değişkenlere bir programdaki herhangi bir yöntemden erişilebilir (yalnızca bir yöntemden değil).

"Tam olarak anlamıyorum ama bu bana uygun görünüyor."

"Öyle. Ve bazen gerekli. Statik değişkenler ve yöntemler olmasaydı, sıkışıp kalırdık."

"Umarım yavaş yavaş çözebilirim."

"Evet, elbette yapacaksın."