创建了多少个对象?

时间:2020-02-22 16:29:15

标签: java object memory heap-memory

在这种情况下,我们是否有6个布尔对象?<​​/ p>

Boolean b1 = true;
Boolean b2 = true;
Boolean b3 = true;
Boolean b4 = new Boolean(true);
Boolean b5 = new Boolean(true);
Boolean b6 = new Boolean(true);

1 个答案:

答案 0 :(得分:2)

有四个不同的对象。在Oracle的Java实现中,不同的对象具有不同的IdentityHashCodes。所以:

        Set<Integer> dups = Stream
                .of(b1, b2, b3, b4, b5, b6)
                .map(System::identityHashCode)
                .collect(Collectors.toSet());

        System.out.println(dups.size()); // prints 4 

此外,Boolean构造函数是deprecated