Sobes.tech
Intern

Quelle est la différence entre les types de données primitifs et de référence?

sobes.tech IA

Réponse de l'IA

Les types primitifs stockent directement la valeur, tandis que les types de référence stockent une référence (adresse en mémoire) à l'objet contenant la valeur.

Types primitifs :

  • Occupent une taille fixe et petite en mémoire.
  • Sont transmis par valeur (la valeur elle-même est copiée).
  • Commencent par une minuscule.
  • Incluent : byte, short, int, long, float, double, boolean, char.
// Exemple de type primitif
int a = 10;
int b = a; // La valeur 10 est copiée
b = 20;   // Seul b change, a reste 10

Types de référence :

  • Occupent différentes quantités de mémoire, dépendant du contenu de l'objet.
  • Sont transmis par référence (l'adresse de l'objet est copiée). Modifier l'objet via la référence affecte toutes les variables qui y font référence.
  • Commencent généralement par une majuscule (classes).
  • Incluent : classes (String, Object, classes personnalisées), interfaces, tableaux.
// Exemple de type de référence
String str1 = new String("Hello");
String str2 = str1; // La référence à l'objet "Hello" est copiée
str2 = "World";   // str2 pointe maintenant vers un nouvel objet "World". str1 pointe toujours vers "Hello".

// Autre exemple avec un objet mutable
ArrayList<Integer> list1 = new ArrayList<>();
list1.add(1);
ArrayList<Integer> list2 = list1; // La référence au même objet ArrayList est copiée
list2.add(2); // Ajout d'un élément à l'objet accessible via les deux références
// Maintenant, list1 contient [1, 2] et list2 aussi [1, 2]

Tableau comparatif rapide :

Propriété Types primitifs Types de référence
Stockage Valeur Référence à l'objet
Transmission Par valeur Par référence
Taille mémoire Fixe et petite Variable
Commence par Minuscule Généralement majuscule
Nullabilité Ne peuvent pas être null Peuvent être null

Les types primitifs sont enveloppés dans des classes wrapper pour pouvoir les manipuler comme des objets (par exemple, int dans Integer).