Contenu du cours
Java Étendu
Java Étendu
Transfert de Données en Java
Comment l'information est-elle transmise en Java?
Vous savez d'après le cours précédent qu'il existe deux types de mémoire - pile et tas. Examinons comment les données sont stockées dans ces deux zones de mémoire :
Main
package com.example; public class Main { public static void main(String[] args) { String number = new String("170"); String word = new String("word"); int poolNumber = -4; } }
Nous avons créé 3 variables différentes. Ci-dessous se trouve un diagramme illustrant comment et où elles seront stockées en mémoire :
Passons en revue ce que vous avez observé dans le diagramme :
- Nous voyons des champs
String
dans la mémoire de pile qui sont des liens vers des valeurs dans la mémoire de tas. De cette façon, nous n'accédons pas directement à la mémoire de tas à chaque fois. Au lieu de cela, nous accédons d'abord au lien dans la mémoire de pile, ce qui est plus rapide que d'accéder à la mémoire de tas. Vous avez déjà rencontré des liens vers des valeurs en apprenant sur le sujet du String Pool ; - Vous pouvez voir que
int
n'est pas stocké dans la mémoire de tas ; sa valeur est stockée directement dans la mémoire de pile. Cela s'applique à tous les types de données primitifs (byte
,short
,int
,long
,float
,double
, etboolean
). Ainsi, les types de données primitifs sont passés en Java par valeur. Cependant,String
n'est pas un type de données primitif, donc sa valeur est stockée dans la mémoire de tas ; - Un nouvel objet est créé dans la mémoire de tas pour chaque nouveau lien. Cependant, si deux variables du même type ont la même valeur, elles référenceront le même objet dans la mémoire de tas ;
- Le Integer Pool est une zone dans la mémoire de pile où toutes les valeurs entières dans la plage de
-128
à127
sont liées. Cette optimisation est faite pour améliorer la performance de la gestion des nombres en Java, car les nombres dans cette plage sont couramment utilisés. Rappelez-vous que la mémoire de pile fonctionne plus rapidement que la mémoire de tas, donc nous obtenons des réponses plus rapides grâce au Integer Pool ; - Le String Pool est une zone dans la mémoire de tas où les valeurs de chaîne identiques sont stockées.
Conclusion
Nous pouvons conclure qu'en Java, les types de données sont passés par valeur. Les objets comme String
sont également passés par valeur, mais ils passent par une étape de passage par référence.
1. Qu'est-ce qu'un Integer Pool en Java ?
2. Comment les données sont-elles passées en Java, par référence ou par valeur ?
Tout était clair ?
Merci pour vos commentaires !
Section 1. Chapitre 2