Cette phrase est égale à myString != null
, myString.length() > 0
et ! myString.equals("")
? Quel est le plus efficace? (Java 1.4)Efficace dans les chaînes Java
Répondre
Ce ne sont pas tous équivalents - une référence nulle n'est pas la même chose qu'une chaîne vide. Le test nul sera probablement le plus efficace car tous les autres nécessitent au moins d'abord de savoir si la référence est nulle ou non.
Le meilleur moyen de le savoir est de mesurer la performance:
public static void main(String[] args)
{
String myString = "foo";
int a = 0;
for (int i = 0; i < 100000000; ++i)
{
//if (myString != null)
//if (myString.length() > 0)
if (!myString.equals(""))
{
a++;
}
}
System.out.println(a);
}
Les résultats:
myString != null : 0.61s myString.length() > 0 : 0.67s !myString.equals("") : 2.82s
donc un test nul et un test de longueur prennent à peu près la même quantité de temps, mais tester l'égalité avec une chaîne vide prend plus de quatre fois plus de temps. Notez que j'ai testé sur une version légèrement plus récente de Java que vous utilisez, donc vous devriez exécuter les tests vous-même pour voir si vous obtenez les mêmes résultats.
Ils ne sont pas équivalents. Si myString est null, le 2nd lancera une exception NullPointerException.
Cela dit, (myString! = Null & & myString.length()! = 0) pourrait être un peu plus efficace que ("" equals (myString)). Mais ils vont quand même réagir différemment à myString étant nul.
- 1. Java - Eclipse: Externaliser les chaînes?
- 2. Communication efficace entre les objets Java
- 3. Insertion efficace et recherche de chaînes
- 4. regex - y compris les chaînes: java
- 5. Java: Trouver des correspondances entre les chaînes
- 6. Comparaison de chaînes Java
- 7. Gestion des valeurs de substitution Unicode dans les chaînes Java
- 8. Comprendre le $ dans les chaînes de format Java
- 9. Recherche des chaînes dans les chaînes preg
- 10. Mise en forme de chaînes dans Java
- 11. Comment gérer l'encodage de chaînes dans Java?
- 12. Comparez deux chaînes hexadécimales dans Java?
- 13. manière efficace pour trouver des correspondances contre deux chaînes
- 14. Java ArrayList recherchant plusieurs chaînes
- 15. Gestion des ressources de chaînes Java
- 16. java fusionne deux chaînes xml en java
- 17. pipeline XSLT efficace, avec params, en Java
- 18. Mixer deux chaînes en Java
- 19. Ecriture d'un code ORM personnalisé simple et efficace dans Java
- 20. analyse de chaînes en Java
- 21. Analyse en Python: quel est le moyen le plus efficace pour supprimer/normaliser les chaînes?
- 22. Java - Manière efficace d'obtenir des entrées spécifiques de l'utilisateur
- 23. Un cache efficace dans Delphi
- 24. nombre de chaînes en java
- 25. Comment trier les chaînes qui contiennent des nombres en Java
- 26. Implémentation de l'interface Builder dans le livre Java efficace
- 27. @ (arobase) dans les chaînes Drupal
- 28. Concaténer les chaînes dans UrlMappings?
- 29. Grille efficace dans les formulaires Web asp.net
- 30. Manière la plus efficace de gérer les chaînes formatées pour les UIlabels constamment mis à jour dans Xcode
Peu importe. Passez à quelque chose d'important. – JohnFx
@JohnFx: quelque chose d'important comme, disons, le sens de la vie? Quoi qu'il en soit, ce qui ** EST ** important est que, contrairement à ce qui est indiqué dans les questions, ce sont ** PAS ÉGAUX DU TOUT **. – NoozNooz42