gpt4 book ai didi

java - 创建的对象数量

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:46:46 26 4
gpt4 key购买 nike

在下面的例子中,将创建多少个对象?并解释关于相同的逻辑?

class test {
public static void main(String args[]) {

// 1 Integer Object
Integer i=10;

// 1 Integer Object
Integer j=10;

// sum of Integer Object
Integer k=i+j;
}
}

据我所知,它将创建 2 个对象。第一个对于 Integer i=10 它在内部转换为 Integer.valueOf(10) 然后调用 Integer 的 valueof 方法,这些在内部调用 IntegerCache 并通过创建对象获取对象并将其存储在缓存中。与 j 类似,因为它已经被缓存,它指向同一个对象,然后将创建 k 对象。所以总共 2 个。

但有些人说整数值在 -127 到 +128 之间,我们将从缓存中获取对象。第一个对于 Integer i=10 它在内部转换为 Integer.valueOf(10) 然后调用 Integer 的 valueof 方法,这些在内部调用 IntegerCache 并通过缓存获取对象。类似于缓存中的 j。和 K 值 20 也来自缓存。所以对象将为零。

所以我不确定是0还是2。

如果有人知道请告诉我。

最佳答案

零是正确的,所有这些整数都将从缓存中提取。

如果您将其更改为 new Integer(10),那么它将创建一个新对象。

如果您更改 i、j 和/或 k 以便它们不是缓存值,那么它将再次创建新对象。

嗯,实际上比这要复杂一点。缓存是创建时已经填充还是根据需要延迟填充取决于 JVM 实现。从您的代码的角度来看,虽然无法区分,但也没有区别。

关于java - 创建的对象数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24159758/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com