在java中将布尔对象转换为字符串的最佳方法
我正在尝试将布尔值转换为字符串类型...
Boolean b = true;
String str = String.valueOf(b);
或
Boolean b = true;
String str = Boolean.toString(b);
以上哪一个会更有效率?
我正在尝试将布尔值转换为字符串类型...
Boolean b = true;
String str = String.valueOf(b);
或
Boolean b = true;
String str = Boolean.toString(b);
以上哪一个会更有效率?
我不认为它们之间会有任何显着的性能差异,但我更喜欢第一种方式。
如果您有引用,则将抛出(如果引用是 )。因为引用在传递给方法之前已取消装箱。Boolean
Boolean.toString(boolean)
NullPointerException
null
boolean
而,源代码所示的方法会执行显式检查:String.valueOf()
null
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
只需测试此代码:
Boolean b = null;
System.out.println(String.valueOf(b)); // Prints null
System.out.println(Boolean.toString(b)); // Throws NPE
对于原始布尔值,没有区别。
如果您确定您的值不是,则可以使用第三个选项,即null
String str3 = b.toString();
它的代码看起来像
public String toString() {
return value ? "true" : "false";
}
如果你想是空安全的,请使用哪些代码看起来像String.valueOf(b)
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
因此,如您所见,它将首先测试并在您的对象上调用方法。null
toString()
调用将调用Boolean.toString(b)
public static String toString(boolean b) {
return b ? "true" : "false";
}
这比JVM需要首先解箱要慢一点,这将作为参数传递给,同时重用持有其状态的对象中的字段。b.toString()
Boolean
boolean
Boolean.toString(...)
b.toString()
private boolean value
Boolean