Variables locales

"Salutations, mon étudiant bien-aimé ! Il est temps d'être un peu plus sérieux au sujet 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, elle existe à partir du moment où elle est déclarée jusqu'à la fin du bloc de code dans lequel il est déclaré.

"De toute évidence, j'ai besoin d'un exemple."

"Pas de problème. Et voilà :

Code Disponibilité 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

"Revoyons une fois de plus les règles d'accès aux variables locales. Voici un bloc de code. Qu'est-ce qui marque son début et sa fin ?"

"Accolades?"

"Correct. Cela peut être le corps d'une méthode, le corps d'une boucle ou simplement 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. Dites-moi, où une variable existe si elle est déclarée dans le corps d'une boucle ?"

"Il n'existera que dans le corps de la boucle."

"C'est vrai. De plus, il sera créé et détruit à chaque itération de la boucle."

"Cela signifie que 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. "

"Il y a une raison pour laquelle tu es mon préféré, Amigo. Prends un autre exemple pour solidifier cela dans ton cerveau.

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 buniquement parce que la première bvariable n'est pas visible dans le bloc de code où la deuxième bvariable est déclarée.

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 ?"

"Hmm... je suis perplexe..."

"Tout est assez simple ici. 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 lorsque la méthode se termine."

"En d'autres termes, ils sont visibles dans tout le corps de la méthode et seulement là ?"

"Oui. 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, argsn'est qu'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.

Variables dans une classe

"Rappelez-vous les leçons du niveau 1, où nous avons dit 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.

"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."

« Et pourquoi sont-ils là ?

"Pour commencer, elles 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 sumet count. Les deux méthodes fonctionnent sur des variables d'instance partagées."

"Je comprends tout ! 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."

"Bien joué, Amigo. Nous avons préparé le terrain et vous apprendrez des détails sur les objets d'une classe au niveau suivant.

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.

"Je n'ai pas encore une compréhension claire des variables statiques."

"Oh, je sais, mais ne vous inquiétez pas. Pour l'instant, familiarisez-vous avec eux. Familiarisez-vous avec eux. Au niveau 11, nous analyserons la structure des variables statiques et des méthodes et vous en comprendrez les raisons. 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, elles appartiennent à la classe elle-même. C'est pourquoi elles existent même si aucun objet de la classe n'a été créé . Vous pouvez vous référer à les d'autres classes en utilisant une construction comme:

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 countet et les avons déclarées static . Les variables statiques publiques sont accessibles à partir de n'importe quelle méthode d'un programme (et pas seulement à partir d'une méthode)."sum

"Je ne comprends pas tout à fait, mais cela me semble pratique."

"C'est vrai. Et parfois c'est nécessaire. Sans variables et méthodes statiques, nous serions bloqués."

"J'espère que je vais lentement être capable de le comprendre."

"Oui, bien sûr que tu le feras."