1

根据文档,该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单独创建一个。

4

3 回答 3

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);
于 2013-09-23T15:20:04.410 回答
0

不会创建新对象,您永远不会实例化新的布尔对象。通过使用Boolean.valueOf(),您只是在调用参考。

于 2013-09-23T15:19:09.247 回答
0

您可以使用 jvisualvm 或任何其他内存分析器/分析器工具跟踪实例数量。

于 2013-09-23T15:21:08.803 回答