Best approach to converting Boolean object to string in java
I don't think there would be any significant performance difference between them, but I would prefer the 1st way.
If you have a Boolean
reference, Boolean.toString(boolean)
will throw NullPointerException
if your reference is null
. As the reference is unboxed to boolean
before being passed to the method.
While, String.valueOf()
method as the source code shows, does the explicit null
check:
public static String valueOf(Object obj) { return (obj == null) ? "null" : obj.toString();}
Just test this code:
Boolean b = null;System.out.println(String.valueOf(b)); // Prints nullSystem.out.println(Boolean.toString(b)); // Throws NPE
For primitive boolean, there is no difference.
If you are sure that your value is not null
you can use third option which is
String str3 = b.toString();
and its code looks like
public String toString() { return value ? "true" : "false";}
If you want to be null-safe use String.valueOf(b)
which code looks like
public static String valueOf(Object obj) { return (obj == null) ? "null" : obj.toString();}
so as you see it will first test for null
and later invoke toString()
method on your object.
Calling Boolean.toString(b)
will invoke
public static String toString(boolean b) { return b ? "true" : "false";}
which is little slower than b.toString()
since JVM needs to first unbox Boolean
to boolean
which will be passed as argument to Boolean.toString(...)
, while b.toString()
reuses private boolean value
field in Boolean
object which holds its state.
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--------------truefalseValue of b= trueValue of z= false--------------