1. Lokala variabler

Låt oss prata mer seriöst om variabler. Men den här gången ska vi inte diskutera deras interna struktur. Istället kommer vi att fokusera på hur variabler interagerar med koden där de finns.

Alla variabler som deklareras i metoder kallas lokala variabler . En lokal variabel finns bara i kodblocket där den deklareras. Eller, för att vara mer exakt, det existerar från det ögonblick det deklareras till slutet av kodblocket där det deklareras.

För enkelhetens skull, låt oss överväga ett exempel:

Koda Variabel sikt
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

Låt oss prata om att komma åt lokala variabler en gång till. Här är ett kodblock som består av klammerparenteser: detta kan vara en metodkropp, kroppen av en loop eller bara ett kodblock för en villkorlig sats. En variabel som deklareras i ett kodblock existerar till slutet av det kodblocket.

Om en variabel deklareras i slingans kropp, kommer den endast att finnas i slingans kropp. Den skapas och förstörs vid varje iteration av loopen.

Du kan inte deklarera två lokala variabler med samma namn i en metod – programmet kompilerar inte. Men du kan göra detta om kodblocken där variablerna deklareras inte överlappar varandra.

Exempel:

Koda Variabel sikt
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 kunde deklarera en andra lokal variabel b endast namngiven eftersom den första b variabeln inte är synlig i kodblocket där den andra bvariabeln deklareras.


2. Parametrar

Som vi sa tidigare kan varje metod ha variabler som vi kallar parametrar. Hur är det med deras synlighet och livslängd?

Det hela är okomplicerat. Parametrar skapas när exekvering går in i metoden (dvs när metodens kod börjar exekvera). De elimineras när metoden tar slut. De är synliga i hela metoden.

Exempel:

Koda Variabel sikt
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 tidigare, argsär bara en variabel vars typ är en array av strängar. Och som alla parametrar är den tillgänglig överallt i metoden. Som sagt, vi brukar ignorera det i våra exempel.



3. Variabler i en klass

Du kommer ihåg från lektionerna på nivå 1 att en klass kan ha metoder och variabler. Metoder kallas ibland instansmetoder och variabler – instansvariabler eller fält. Dessa är faktiskt synonymer i Java.

Vilka är variablerna (eller fälten) i en klass?

De är variabler som inte deklareras i en metod, utan i en klass.

De kan nås från vilken (icke-statisk) metod som helst i en klass. Grovt sett är instansvariabler variabler som delas av alla metoder i en klass.

Exempel:

Koda Variabel sikt
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 det här exemplet har vi två metoder - add()och remove(). Metoden add()ökar variablerna sumoch countinstans, och remove()metoden minskar variablerna sum och . countBåda metoderna fungerar på delade instansvariabler.

Lokala variabler finns medan en metod körs. Förekomstvariablerna för en klass finns inom ett objekt i en klass så länge det objektet existerar . Du kommer att lära dig detaljer om objekt i en klass på nästa nivå.


4. Statiska variabler

Liksom metoder kan variablerna i en klass vara statiska eller icke-statiska. Statiska metoder kan bara komma åt statiska variabler.

På nivå 11 kommer vi att analysera strukturen för statiska variabler och metoder och du kommer att förstå orsakerna till dessa begränsningar.

För att göra en statisk variabel (klassvariabel) måste du skriva staticnyckelordet i dess deklaration.

Statiska variabler är inte bundna till ett objekt eller instans av klassen där de deklareras. Istället tillhör de själva klassen. Det är därför de existerar även om inte ett enda objekt i klassen har skapats . Du kan referera till dem från andra klasser med en konstruktion som:

ClassName.variableName

Exempel:

Koda Variabel sikt
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 exemplet ovan skapade vi en separat Storageklass, flyttade in variablerna count och sum till den och förklarade dem statiska . Offentliga statiska variabler kan nås från vilken metod som helst i ett program (och inte bara från en metod).