String a="ABC";
a="BCD";
System.out.println(a); //BCD
" ABC"会发生什么?有人可以解释一下会发生什么吗?
答案 0 :(得分:2)
当您执行a
时,您的字符串文字会自动添加到字符串池中。它保存在字符串池中,以便JVM可以重用它。
此后,字符串的垃圾收集规则与任何其他对象的规则相同。在我们将任何其他对象分配给"ABC"
变量之前,如果{{1}}被任何其他变量引用,那么它将保留在池中。
否则,如果它不再被引用,那么它将在下次GC运行时收集垃圾。
答案 1 :(得分:0)
' ABC'收集垃圾,因为它已丢失参考