1. Lokale variabler

Lad os tage en mere seriøs snak om variabler. Men denne gang vil vi ikke diskutere deres interne struktur. I stedet vil vi fokusere på, hvordan variabler interagerer med koden, hvor de er placeret.

Alle variabler, der er erklæret inde i metoder, kaldes lokale variabler . En lokal variabel findes kun i den kodeblok, hvori den er erklæret. Eller, for at være mere præcis, eksisterer den fra det øjeblik, den er deklareret, til slutningen af ​​den kodeblok, hvor den er deklareret.

For nemheds skyld, lad os overveje et eksempel:

Kode Variabel synlighed
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

Lad os tale om at få adgang til lokale variabler en gang til. Her er en kodeblok bestående af krøllede klammeparenteser: dette kan være en metodetekst, en løkkes krop eller bare en kodeblok til en betinget sætning. En variabel erklæret i en kodeblok eksisterer indtil slutningen af ​​denne kodeblok.

Hvis en variabel er erklæret i løkkens krop, vil den kun eksistere i løkkens krop. Det skabes og ødelægges ved hver iteration af løkken.

Du kan ikke erklære to lokale variabler med samme navn i én metode - programmet vil ikke kompilere. Men du kan gøre dette, hvis kodeblokkene, hvor variablerne er erklæret, ikke overlapper hinanden.

Eksempel:

Kode Variabel synlighed
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

Vi var i stand til at erklære en anden lokal variabel kun navngivet, b fordi den første b variabel ikke er synlig i kodeblokken, hvor den anden bvariabel er erklæret.


2. Parametre

Som vi sagde før, kan hver metode have variabler, som vi kalder parametre. Hvad med deres synlighed og levetid?

Det hele er ligetil. Parametre oprettes, når eksekveringen træder ind i metoden (dvs. når metodens kode begynder at udføre). De elimineres, når metoden slutter. De er synlige i hele metoden.

Eksempel:

Kode Variabel synlighed
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

Som vi sagde tidligere, argser det bare en variabel, hvis type er en række strenge. Og som alle parametre er den tilgængelig overalt i metodens krop. Når det er sagt, ignorerer vi det normalt i vores eksempler.



3. Variabler i en klasse

Du vil huske fra lektionerne på niveau 1, at en klasse kan have metoder og variabler. Metoder kaldes nogle gange instansmetoder, og variabler - instansvariabler eller felter. Disse er faktisk synonymer i Java.

Hvad er variablerne (eller felterne) i en klasse?

De er variabler, der ikke deklareres i en metode, men i en klasse.

De kan tilgås fra enhver (ikke-statisk) metode i en klasse. Groft sagt er instansvariabler variabler, der deles af alle metoderne i en klasse.

Eksempel:

Kode Variabel synlighed
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

I dette eksempel har vi to metoder - add()og remove(). Metoden add()øger variablerne sumog countforekomsten, og remove()metoden reducerer variablerne sum og count. Begge metoder arbejder på delte instansvariabler.

Lokale variabler eksisterer, mens en metode udføres. Forekomstvariablerne for en klasse findes i et objekt i en klasse , så længe det objekt eksisterer. Du lærer detaljer om objekter i en klasse på det næste niveau.


4. Statiske variable

Ligesom metoder kan variablerne i en klasse være statiske eller ikke-statiske. Statiske metoder kan kun få adgang til statiske variabler.

På niveau 11 analyserer vi strukturen af ​​statiske variabler og metoder, og du vil forstå årsagerne til disse begrænsninger.

For at lave en statisk variabel (klassevariabel) skal du skrive nøgleordet statici dets erklæring.

Statiske variable er ikke bundet til et objekt eller en forekomst af den klasse, hvori de er erklæret. I stedet tilhører de selve klassen. Det er derfor, de eksisterer, selvom der ikke er oprettet et eneste objekt i klassen . Du kan henvise til dem fra andre klasser ved hjælp af en konstruktion som:

ClassName.variableName

Eksempel:

Kode Variabel synlighed
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

I ovenstående eksempel oprettede vi en separat Storageklasse, flyttede variablerne count og sum ind i den og erklærede dem statiske . Offentlige statiske variabler kan tilgås fra enhver metode i et program (og ikke kun fra en metode).