1. Lokale variabler

La oss snakke mer seriøst om variabler. Men denne gangen skal vi ikke diskutere deres interne struktur. I stedet vil vi fokusere på hvordan variabler samhandler med koden der de er plassert.

Alle variabler som er deklarert inne i metoder kalles lokale variabler . En lokal variabel eksisterer bare i kodeblokken den er deklarert i. Eller, for å være mer presis, den eksisterer fra øyeblikket den er deklarert til slutten av kodeblokken der den er deklarert.

For enkelhets skyld, la oss vurdere et eksempel:

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

La oss snakke om å få tilgang til lokale variabler en gang til. Her er en kodeblokk som består av krøllete klammeparenteser: dette kan være en metodetekst, kroppen til en løkke, eller bare en kodeblokk for en betinget setning. En variabel deklarert i en kodeblokk eksisterer til slutten av den kodeblokken.

Hvis en variabel er deklarert i løkkens kropp, vil den bare eksistere i løkkens kropp. Det opprettes og ødelegges ved hver iterasjon av loopen.

Du kan ikke deklarere to lokale variabler med samme navn i én metode - programmet vil ikke kompilere. Men du kan gjøre dette hvis kodeblokkene der variablene er deklarert ikke overlapper hverandre.

Eksempel:

Kode Variabel synlighet
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 å deklarere en andre lokal variabel bare navngitt b fordi den første b variabelen ikke er synlig i kodeblokken der den andre bvariabelen er deklarert.


2. Parametre

Som vi sa før, kan hver metode ha variabler som vi kaller parametere. Hva med deres synlighet og levetid?

Det hele er enkelt. Parametere opprettes når kjøringen går inn i metoden (dvs. når koden til metoden begynner å utføres). De elimineres når metoden avsluttes. De er synlige i hele metoden.

Eksempel:

Kode Variabel synlighet
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 sa tidligere, argser det bare en variabel hvis type er en rekke strenger. Og som alle parametere, er den tilgjengelig overalt i hoveddelen av metoden. Når det er sagt, ignorerer vi det vanligvis i eksemplene våre.



3. Variabler i en klasse

Du vil huske fra leksjonene på nivå 1 at en klasse kan ha metoder og variabler. Metoder kalles noen ganger forekomstmetoder, og variabler - forekomstvariabler eller felt. Dette er faktisk synonymer i Java.

Hva er variablene (eller feltene) i en klasse?

De er variabler som ikke er deklarert i en metode, men i en klasse.

De kan nås fra enhver (ikke-statisk) metode i en klasse. Grovt sett er instansvariabler variabler som deles av alle metodene i en klasse.

Eksempel:

Kode Variabel synlighet
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 eksemplet har vi to metoder - add()og remove(). Metoden add()øker variablene sumog countforekomst, og remove()metoden reduserer variablene sum og count. Begge metodene fungerer på delte forekomstvariabler.

Lokale variabler eksisterer mens en metode kjøres. Forekomstvariablene til en klasse eksisterer i et objekt i en klasse så lenge det objektet eksisterer. Du vil lære detaljer om objekter i en klasse på neste nivå.


4. Statiske variabler

I likhet med metoder kan variablene i en klasse være statiske eller ikke-statiske. Statiske metoder kan bare få tilgang til statiske variabler.

På nivå 11 vil vi analysere strukturen til statiske variabler og metoder, og du vil forstå årsakene til disse begrensningene.

For å lage en statisk variabel (klassevariabel), må du skrive nøkkelordet statici deklarasjonen.

Statiske variabler er ikke bundet til et objekt eller forekomst av klassen de er deklarert i. I stedet tilhører de klassen selv. Det er derfor de eksisterer selv om ikke et eneste objekt i klassen er opprettet . Du kan referere til dem fra andre klasser ved å bruke en konstruksjon som:

ClassName.variableName

Eksempel:

Kode Variabel synlighet
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 eksemplet ovenfor opprettet vi en egen Storageklasse, flyttet variablene count og sum inn i den og erklærte dem statiske . Offentlige statiske variabler kan nås fra hvilken som helst metode i et program (og ikke bare fra en metode).