取消引用字符串文字会发生什么?

时间:2017-07-23 05:08:34

标签: java string

String a="ABC";
a="BCD";
System.out.println(a); //BCD

" ABC"会发生什么?有人可以解释一下会发生什么吗?

2 个答案:

答案 0 :(得分:2)

当您执行a时,您的字符串文字会自动添加到字符串池中。它保存在字符串池中,以便JVM可以重用它。

此后,字符串的垃圾收集规则与任何其他对象的规则相同。在我们将任何其他对象分配给"ABC"变量之前,如果{{1}}被任何其他变量引用,那么它将保留在池中。

否则,如果它不再被引用,那么它将在下次GC运行时收集垃圾。

答案 1 :(得分:0)

' ABC'收集垃圾,因为它已丢失参考