您好我正在使用java并想知道如何在String池中创建String对象 以及如何管理它们。
所以在下面的例子中我创建了两个字符串s和s1,那么有人能解释我在LIne1中创建了多少个对象吗?还有多少个对象可以在Line3中进行垃圾收集?
String s = "x" + "y";//Line 1
String s1 = s;//Line 2
s = null;//Line 3
答案 0 :(得分:3)
只创建了一个对象"xy"
。编译器会进行优化。
没有对象符合垃圾回收的条件。
答案 1 :(得分:0)
它将在字符串常量池区域中创建一个对象xy
。由于"x"+"y"
将在编译期间进行评估。此外,垃圾收集器无法访问String常量池区域。
参考:https://docs.oracle.com/javase/specs/jls/se7/html/jls-3.html#jls-3.10.5