Les types primitifs et les types par référence                        

Les types primitifs et les types par référence

           

Les types primitifs sont :

Les autres types de données sont des types par référence vers des objets ou des tableaux. En fait, ce sont de variables destinées à contenir des adresses d'objets ou de tableaux, ce que l'on exprime par : les données non primitives sont manipulées "par référence" alors que les données primitives sont manipulées par valeur.
Il est important de comprendre cette manipulation par référence des types non primitifs. Par exemple, si on appelle une méthode en lui envoyant en paramètre un tableau, on transmet en fait (comme en C) l'adresse du tableau ; si la méthode appelée modifie le contenu d'un tableau reçu en paramètre, elle modifie aussi le contenu du tableau dont on lui a transmis l'adresse, puisqu'il s'agit du même tableau ! De même pour les attributs des objets transmis en paramètres lors d'appels de méthodes.

Signalons que la valeur par défaut de tout attribut d'un type "par référence" est la valeur null.

Nous vous conseillons détudier soigneusement la question suivante et, si le résultat n'est pas clair pour vous, de suivre les explications données avec la réponse.
Question : Quelle est, à l'exécution, la sortie du programme suivant ?

class PetitObjet {
    private int valeur = 5;
    
    int getValeur() {
	return this.valeur;
    } 
    
    void setValeur(int val) {
	this.valeur = val;
    }
}

class EssaiPassage {
    static void travailler(int[] tableau, int n, PetitObjet petit) {
      tableau[0] = 4;
      n = 7 ;
      petit.setValeur(10); 
   }

   public static void main(String[] arg) {
      int[] table = {1, 2};
      int n = 3;
      PetitObjet petit = new PetitObjet();

      travailler(table, n, petit);
      System.out.println(table[0] + " " + n + " " + petit.getValeur());
   }
}
On peut trouver ici le code de l'exercice

© Irène Charon Télécom ParisTech 2010