Différence :
Affectation directe : seul un espace mémoire tas sera ouvert et l'objet chaîne peut être automatiquement enregistré dans le pool d'objets .pour une prochaine utilisation.
Méthode de construction : deux espaces mémoire tas seront ouverts, dont l'un deviendra un espace poubelle et ne sera pas automatiquement enregistré dans le pool d'objets. Vous pouvez utiliser la méthode intern() pour entrer manuellement dans le pool.
Tutoriels vidéo Java recommandés : Tutoriels vidéo Java
Affectation directe :
Mécanisme d'optimisation constante :
La conception de la classe String utilise le modèle de conception partagé.
Au bas de la JVM, un pool d'objets (pool d'objets string) sera effectivement automatiquement maintenu. Si le mode d'affectation directe est désormais utilisé pour instancier l'objet de la classe String, alors l'objet instancié (string content ) sera automatiquement enregistré dans ce pool d’objets.
Si vous continuez à utiliser le mode d'affectation directe pour déclarer les objets de la classe String la prochaine fois, s'il y a du contenu spécifié dans le pool d'objets, il sera directement référencé
Sinon, un nouveau ; La chaîne sera ouverte L'objet est ensuite stocké dans le pool d'objets pour la prochaine utilisation. Ce qu'on appelle le pool d'objets est un tableau d'objets (le but est de réduire la surcharge)
Affectation de la méthode constructeur :
Il est de pratique courante que les objets de classe soient instanciés à l'aide de constructeurs.
String str = new String("hello");
Grâce à l'analyse, on peut voir que si la méthode de construction String est utilisée, deux espaces de mémoire de tas seront ouverts et l'un des tas de mémoire deviendra un espace poubelle. En plus de cette lacune, il existe également des problèmes de partage de chaînes.
Par conséquent, l'affectation directe est généralement adoptée.
Articles et tutoriels connexes recommandés : Démarrer avec Java
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!