如何检查我是否以编程方式创建新实例?

时间:2013-09-23 15:16:19

标签: java

根据文档,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

3 个答案:

答案 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或任何其他内存分析器/分析器工具跟踪实例数。