En Java On peut créer une chaîne en utilisant un nouvel opérateur ou en utilisant + et + =. Toutes ces techniques de création de chaînes vérifient donc si la chaîne existe déjà dans le pool de chaînes. S'ils dorment alors quelle technique de création de String va vérifier le pool.Création de chaîne en Java
Répondre
Non, ils ne le font pas.
Exemple simple:
String s = new String("hell");
String hello = "hello";
s += 'o';
System.out.println(hello == hello.intern()); //True
System.out.println(s == s.intern()); //False
System.out.println(s == hello); //False
System.out.println(s.intern() == hello); //True
//To sum up : s != s.intern() == hello.intern() == hello
Voici la nouvelle version de "s" est pas la version interne de "bonjour"
Si vous voulez avoir la version de la piscine de une chaîne spécifique, vous pouvez utiliser la méthode intern()
(comme je l'ai fait ci-dessus). De cette façon, vous êtes sûr d'avoir la même référence.
Ressources:
- Javadoc :
String.intern()
(vous pourriez penser que le lien pointe versvalueOf(double)
, mais la méthodeintern()
est juste après;))
Vous voulez dire que seul intern() va vérifier si la chaîne existe dans le pool. –
@sadananda salam, oui. –
String hello = "Bonjour"; System.out.print ((bonjour == ("Hel" + "lo"))); // je dint utilise intern mais ça retourne vrai. –
constantes de chaîne uniquement et littéraux sont automatiquement internés. Si vous concaténez ou créez des chaînes, vous devez appeler la méthode interne(). Voir http://download.oracle.com/javase/1.4.2/docs/api/java/lang/String.html#intern().
vous avez dit concaténer et créer des chaînes. est-ce une concaténation d'objet de chaîne ou une chaîne de caractères constante/concaténation littérale ou les deux. La création de chaîne peut être effectuée par new, +, + = operator. Dois-je utiliser interne pour tous les 3 opérateurs. –
@sadananda, mon intention était en fait juste de citer des exemples. Le ** seulement ** cas où intern() est implicite est dans les deux cas (vraiment un seul, car ils sont identiques) que j'ai mentionné de "chaînes de caractères" et "chaînes de caractères". Toutes les autres formes d'obtention de chaînes (+, + =, StringBuilder.toString(), etc.) seront de nouvelles instances et non internées. –
- 1. Java Chaîne de création d'objets
- 2. Création de JButtons en Java
- 3. Format de chaîne en Java?
- 4. Création d'un constructeur par défaut en Java
- 5. Chaîne convertion en java
- 6. Création de variables à l'exécution en Java
- 7. Création de fichiers .obj en Java
- 8. temps de création d'un fichier en Java
- 9. Création de tableaux génériques en Java
- 10. Création de types Nullables en java
- 11. Création de Java exécutable en utilisant JNI?
- 12. Création de programmes Java
- 13. chaîne Décompresser GZip en Java
- 14. Valider une chaîne en Java
- 15. Conversion Unicode en chaîne Java
- 16. Chaîne en bitmap java/android
- 17. Division d'une chaîne en Java
- 18. split chaîne complexe en Java
- 19. scission de la chaîne en java
- 20. Longueur de la chaîne en twips java
- 21. Recherche de sous-chaîne en Java
- 22. Conversion d'une chaîne de couleur en Java
- 23. Convertir une chaîne de base25 à chaîne binaire en Java
- 24. convertir chaîne de format .net en format java chaîne
- 25. Création chaîne de requête dynamique
- 26. Création d'une forme composite en Java 2D
- 27. Création d'un lien physique en Java
- 28. Création d'échantillons MPEG-4 en Java
- 29. Création d'un client irc en Java
- 30. Création d'un panneau Java en plein écran
Que voulez-vous dire? Si deux String ont la même valeur? –
si elle vérifie alors pourquoi cette instruction retourne false. String hello = "Bonjour", lo = "lo"; System.out.print ((bonjour == ("Hel" + lo)) + ""); –
Donc vous avez votre réponse :-) –