考虑此代码
String variable = "";
variable = "3";
variable = "4";
由于string是不可变的,因此将创建三个对象。但只有值被赋值为“4”的最后一个对象才有效。
根据定义,前一行中使用的对象(变量=“3”和变量=“”)仍然在内存中。
我的问题是,当某个对象不再被引用时,我仍可将其称为对象或仅作为不可用的内存位置
答案 0 :(得分:1)
对象始终是对象。如果可以到达,则在下一个GC循环中不符合GC条件。否则它有资格获得GC。
答案 1 :(得分:1)
对于初学者,String对象不会在常规堆中创建,而是驻留在字符串池中。因此,即使“”和“3”没有被任何变量引用,它们仍将留在池中,等待将来使用(或销毁)。所以不,他们不在无法使用的内存位置。
要回答你的问题,它们仍将被称为对象。
答案 2 :(得分:0)
我认为您仍然可以将其称为对象,因为您可以将它与this.variable =“3”一起使用; 也许
答案 3 :(得分:0)
它们不再被代码引用,实际上只是内存中某个位置的字节模式,但它们仍然是对象。 GC必须处理对象,以便最终确定它。所以它们仍然“起作用”作为对象......