根据文档,Boolean.valueOf(boolean)
方法永远不会创建对象。
public class Employee {
public static void main(String args[]){
String s1 = "false";
String s2 = "false";
String s3 = "true";
System.out.println(Boolean.valueOf(s1));
System.out.println(Boolean.valueOf(s2));
System.out.println(Boolean.valueOf(s3));
}
}
以下方法将布尔基元值转换为布尔对象引用
public static Boolean valueOf(boolean b) {
return b ? Boolean.TRUE : Boolean.FALSE;
}
截至目前,创建了多少Boolean Objects
?我可以在我的控制台中查看某个位置是创建new Object()
还是仅创建Object reference
。
答案 0 :(得分:4)
你没有打电话
public static Boolean valueOf(boolean b) { ... }
您正在致电
public static Boolean valueOf(String s) {
return toBoolean(s) ? TRUE : FALSE;
}
其中toBoolean(String)
的实现方式如下:
private static boolean toBoolean(String name) {
return ((name != null) && name.equalsIgnoreCase("true"));
}
结论是:在您发布的代码中,根本没有创建新的Boolean
个对象。
Boolean
类定义了在首次加载类时创建的两个Boolean
对象:
public static final Boolean TRUE = new Boolean(true);
public static final Boolean FALSE = new Boolean(false);
答案 1 :(得分:0)
没有创建新对象,您永远不会实例化新的Boolean对象。使用Boolean.valueOf()
,您只是在调用引用。
答案 2 :(得分:0)
您可以使用jvisualvm或任何其他内存分析器/分析器工具跟踪实例数。