1. Variables locales

Parlons plus sérieusement des variables. Mais cette fois, nous ne discuterons pas de leur structure interne. Au lieu de cela, nous nous concentrerons sur la façon dont les variables interagissent avec le code où elles se trouvent.

Toutes les variables déclarées à l'intérieur des méthodes sont appelées variables locales . Une variable locale n'existe que dans le bloc de code dans lequel elle est déclarée. Ou, pour être plus précis, il existe depuis le moment où il est déclaré jusqu'à la fin du bloc de code dans lequel il est déclaré.

Pour simplifier, prenons un exemple :

Code Visibilité variable
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

Parlons encore une fois de l'accès aux variables locales. Voici un bloc de code composé d'accolades : il peut s'agir du corps d'une méthode, du corps d'une boucle ou simplement d'un bloc de code pour une instruction conditionnelle. Une variable déclarée dans un bloc de code existe jusqu'à la fin de ce bloc de code.

Si une variable est déclarée dans le corps de la boucle, alors elle n'existera que dans le corps de la boucle. Il est créé et détruit à chaque itération de la boucle.

Vous ne pouvez pas déclarer deux variables locales avec le même nom dans une méthode — le programme ne compilera pas. Mais vous pouvez le faire si les blocs de code où les variables sont déclarées ne se chevauchent pas.

Exemple:

Code Visibilité variable
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

Nous avons pu déclarer une deuxième variable locale nommée b uniquement parce que la première b variable n'est pas visible dans le bloc de code où la deuxième bvariable est déclarée.


2. Paramètres

Comme nous l'avons dit précédemment, chaque méthode peut avoir des variables que nous appelons des paramètres. Qu'en est-il de leur visibilité et de leur durée de vie ?

Tout est simple. Les paramètres sont créés lorsque l'exécution entre dans la méthode (c'est-à-dire lorsque le code de la méthode commence à s'exécuter). Ils sont éliminés à la fin de la méthode. Ils sont visibles dans tout le corps de la méthode.

Exemple:

Code Visibilité variable
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

Comme nous l'avons dit précédemment, argsest juste une variable dont le type est un tableau de chaînes. Et comme tous les paramètres, il est disponible partout dans le corps de la méthode. Cela dit, nous l'ignorons généralement dans nos exemples.



3. Variables dans une classe

Vous vous souviendrez des leçons du niveau 1 qu'une classe peut avoir des méthodes et des variables. Les méthodes sont parfois appelées méthodes d'instance, et les variables — variables d'instance ou champs. Ce sont en fait des synonymes en Java.

Quelles sont les variables (ou champs) d'une classe ?

Ce sont des variables qui ne sont pas déclarées dans une méthode, mais dans une classe.

Ils sont accessibles depuis n'importe quelle méthode (non statique) d'une classe. En gros, les variables d'instance sont des variables partagées par toutes les méthodes d'une classe.

Exemple:

Code Visibilité variable
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

Dans cet exemple, nous avons deux méthodes — add()et remove(). La add()méthode incrémente les variables d'instance sumet countet la remove()méthode diminue les variables sum et count. Les deux méthodes fonctionnent sur des variables d'instance partagées.

Les variables locales existent pendant l'exécution d'une méthode. Les variables d'instance d'une classe existent dans un objet d'une classe tant que cet objet existe. Vous apprendrez des détails sur les objets d'une classe au niveau suivant.


4. Variables statiques

Comme les méthodes, les variables d'une classe peuvent être statiques ou non statiques. Les méthodes statiques ne peuvent accéder qu'aux variables statiques.

Au niveau 11, nous analyserons la structure des variables statiques et des méthodes et vous comprendrez les raisons de ces restrictions.

Pour faire une variable statique (variable de classe), vous devez écrire le staticmot clé dans sa déclaration.

Les variables statiques ne sont pas liées à un objet ou à une instance de la classe dans laquelle elles sont déclarées. Au lieu de cela, ils appartiennent à la classe elle-même. C'est pourquoi ils existent même si aucun objet de la classe n'a été créé . Vous pouvez vous y référer à partir d'autres classes en utilisant une construction telle que :

ClassName.variableName

Exemple:

Code Visibilité variable
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

Dans l'exemple ci-dessus, nous avons créé une Storageclasse distincte,  y avons déplacé les variables count et et les avons déclarées static . Les variables statiques publiques sont accessibles depuis n'importe quelle méthode d'un programme (et pas seulement depuis une méthode).sum