Les variables peuvent être utilisées de différentes manières dans un programme, toutefois toutes doivent être impérativement initialisées avant leur utilisation.

Type Valeur
initiale
Exemple
byte
short
int
0 byte var = 0;
short var = 0;
int var = 0;
long 0L long var = 0L;
float 0.0f float var = 0.0f;
double 0.0d double var = 0.0d;
char 'u0000' char var = 'u0000';
boolean false boolean var = false;
Objet null String var = null;

Les variables déclarées dans les méthodes doivent être initialisées manuellement.
Les variables déclarées dans les classes et les tableaux sont initialisés automatiquement à une valeur nulle dépendant de leur type de données.

Une variable peut être manipulée directement à partir de sa classe d'appartenance, voire d'autres classes, il s'agît des variables membres.

class UneClasse {
  static int nombre;
  private float prix;
  public String nom_article = "DVD";
    ...
    static public void UneMethode(int nb){
    nombre = nb;
    ...
  }

  public int UneAutreMethode(String article){
    if(nom_article == article)
      prix = 14.99f;
    ...
  }
  ...
}

Cette catégorie de variables se divisent en deux parties :

  • les variables de classe, déclarées avec un modificateur static, sont utilisables dans toute la classe et même hors d'une instance.
    Elles existent dès et tant que que la classe est chargée.
  • les champs appelés également attributs ou champs d'instance, déclarés dans la classe avec un modificateur d'accès quelconque (private, protected, public ou par défaut), stockent les valeurs des instances d'une classe.
    Elles existent lors d'une instanciation de classe et jusqu'à leur passage au Garbage Collector.
    Ces variables peuvent être exploitées :
    • dans toute la classe, hormis dans les méthodes statiques,
    • dans toutes instances d'une classe.

Par conséquent, à l'instar d'une méthode, il est possible d'appeler une variable suite à l'instanciation de sa classe d'appartenance.
Dans ce cas, le modificateur d'accès n'a pas d'importance puisqu'il s'intéresse au niveau de classe et non au niveau d'instance. Ainsi, une variable déclarée avec le modificateur le plus restrictif, private pourra être accédée par un objet.

public static void main(String[] args){
  UneClasse objet = new UneClasse();
  objet.prix = 18.55;
  objet.nom_article = "pantalon";
  ...
}

Une variable peut être utilisée seulement à partir de sa méthode d'appartenance, c'est le cas des variables locales ou également appelées automatiques.
Elles ont une durée de vie limitée, le temps d'exécution d'une méthode.
Par ailleurs, le seul modificateur accepté pour ces variables, est final.

Exemple
public class Variable {
  static String chaine;
  private String chaine2;
  public String chaine3;

  public static void main(String[] args){
    int i;
    String valeur, temp = "";
    Variable objet = new Variable();

    if(args.length > 0)
      for(i = 0; i < args.length; i++)
        temp += " " + args[i];
    else
      temp = "Valeur par defaut";

    // La variable statique chaine est exploitable
// par toutes les méthodes de la classe
chaine = temp; // chaine2 ne peut être utilisé directement dans
// une méthode statique comme suit chaine2 = temp;,
// par contre suite à l'instanciation de sa classe,
// la variable devient utilisable par le biais de son objet.
objet.chaine2 = temp; // Par l'intermédiaire des arguments, les valeurs
// de variables locales peuvent être transmises à des
// méthodes, lesquels peuvent renvoyer d'autres valeurs.
valeur = objet.affecte(temp); System.out.println("Variable statique : " + chaine); System.out.println("Variable privée : " + objet.chaine2); System.out.println("Variable locale : " + valeur); // Par l'intermédiaire des arguments, les valeurs
// de variables locales peuvent être transmises à des méthodes,
// lesquels peuvent renvoyer d'autres valeurs.
objet.affiche(); } private void affiche(){ String chaine3 = chaine; System.out.println("Variable publique : " + chaine3); } public String transmet(String argument){ String chaine4 = argument; return chaine4; } }