Previous Up Next

B.3.3  Déclarations

De façon générale, une déclaration établit une correspondance entre un nom et une construction nommable (variable, méthode, mais aussi constante camouflée en variable). Les déclarations de variable sont de la forme suivante :

  modifiers type name ;

Les modifiers sont des mots-clés (static, spécification de visibilité private etc., et final pour les constantes), le type est un type (genre int, int[] ou String) et name est un nom de variable. Une bonne pratique est d’initialiser les variables dès leur déclaration, ça évite bien des oublis. Pour ce faire :

  modifiers type name = expression ;

expression est une expression du bon type. Par exemple, voici trois déclarations de variables, de types respectifs « entier », chaîne et tableau de chaîne :

  int i = 0;
  String message = "coucou" ;
  String [] jours =
    {"dimanche""lundi""mardi""mercredi",
    "jeudi""vendredi""samedi"} ;

Les déclarations de « variable » sont en fait de trois sortes :

  1. Dans une classe,
    1. Une déclaration avec le modificateur static définit une variable (un champ) de la classe.
    2. Une déclaration sans le modificateur static définit une variable d’instance des objets de la classe.
  2. Dans une méthode, une déclaration de variable définit une variable locale. Dans ce cas seul le modificateur final est autorisé.

Ces trois sortes de « variables » sont toutes des cases nommées mais leurs comportements sont différents, voire très différents : les variables locales sont autonomes, et leurs noms obéissent à la portée lexicale (voir “structure de bloc” dans B.3.4), les deux autres « variables » existent comme sous-parties respectivement d’une classe et d’un objet ; elles sont normalement désignées comme C.x et o.x, où C et o sont respectivement une classe et un objet.

Sur une note plus mineure, les variables de classe et d’objet non-initialisées explicitement contiennent en fait une valeur par défaut qui est fonction de leur type — zéro pour les types d’entiers et de flottants (et pour char), false pour les boolean, et null pour les objets. En revanche, comme le compilateur Java refuse l’accès à une variable locale quand celle-ci n’a pas été initialisée explicitement, ou affectée avant lecture, il n’y a pas lieu de parler d’initialisation par défaut des variables locales.

Les déclarations de méthode ne peuvent se situer qu’au niveau des classes et suivent la forme générale suivante :

modifiers type name (args)

Les modifiers peuvent être, static (méthode de classe), une spécification de visibilité, final (redéfinition interdite), synchronized (accès en exclusion mutuelle, voir le cours suivant) et native (méthode écrite dans un autre langage que Java). La partie type est le type du résultat de la méthode (void si il n’y en a pas), name est le nom de la méthode et args sont les déclarations des arguments de la méthode qui sont de bêtes déclarations de variables (sans le « ; » final) séparées par des virgules « , ». L’ensemble de ces informations constitue la signature de la méthode.

Suit ensuite le corps de la méthode, entre accolades « { » et « } ». Il est notable que les déclarations d’arguments sont des déclarations de variables ordinaires. En fait on peut voir les arguments d’une méthode comme des variables locales presque normales. À ceci près qu’il n’y a pas lieu d’initialiser les arguments ce qui d’ailleurs n’aurait aucun sens puisque les arguments sont initialisés à chaque appel de méthode.


Previous Up Next