J'essaie de convertir un booléen en chaîne de caractères...
Boolean b = true;
String str = String.valueOf(b);
ou
Boolean b = true;
String str = Boolean.toString(b);
lequel des deux serait le plus efficace ?
J'essaie de convertir un booléen en chaîne de caractères...
Boolean b = true;
String str = String.valueOf(b);
ou
Boolean b = true;
String str = Boolean.toString(b);
lequel des deux serait le plus efficace ?
Je ne pense pas qu'il y ait une différence de performance significative entre les deux, mais je préférerais la première méthode.
Si vous avez un Boolean
référence, Boolean.toString(boolean)
jettera NullPointerException
si votre référence est null
. Comme la référence est déballée pour boolean
avant d'être transmis à la méthode.
Alors que, String.valueOf()
comme le montre le code source, fait l'explicite null
vérifier :
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
Il suffit de tester ce code :
Boolean b = null;
System.out.println(String.valueOf(b)); // Prints null
System.out.println(Boolean.toString(b)); // Throws NPE
Pour les booléens primitifs, il n'y a pas de différence.
Si vous êtes sûr que votre valeur n'est pas null
vous pouvez utiliser la troisième option qui est
String str3 = b.toString();
et son code ressemble à
public String toString() {
return value ? "true" : "false";
}
Si vous voulez être en sécurité nulle, utilisez String.valueOf(b)
dont le code ressemble à
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
donc comme vous le voyez, il va d'abord tester pour null
et invoquer plus tard toString()
sur votre objet.
Appel à Boolean.toString(b)
invoquera
public static String toString(boolean b) {
return b ? "true" : "false";
}
qui est un peu plus lent que b.toString()
puisque la JVM doit d'abord déballer Boolean
a boolean
qui sera passé comme argument à Boolean.toString(...)
alors que b.toString()
réutilisations private boolean value
dans le champ Boolean
qui contient son état.
public class Sandbox {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Boolean b = true;
boolean z = false;
echo (b);
echo (z);
echo ("Value of b= " + b +"\nValue of z= " + z);
}
public static void echo(Object obj){
System.out.println(obj);
}
}
Result -------------- true false Value of b= true Value of z= false --------------
Si vous cherchez un moyen rapide de le faire, par exemple pour le débogage, vous pouvez simplement concaténer une chaîne vide sur le booléen :
System.out.println(b+"");
Cependant, je recommande vivement d'utiliser une autre méthode pour une utilisation en production. Il s'agit d'une solution simple et rapide qui est utile pour le débogage.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.