在下面的例子中,将创建多少个对象?并解释关于相同的逻辑?多少个对象创建
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
如果有谁知道请告诉我。
这意味着JVM已经包含整数范围从-127到128的缓存对象。我是否正确?\ – Mahesh
@ user3729324我刚刚在最后添加了一条警告。不同的JVM被允许以不同的方式处理,我相信 –
似乎jvm肯定会将整数从'-127到128'(包含)缓存起来,尽管对于这个范围以外的值我们不能这么说。 – Shail016