JAVA中关于串池的有关问题

JAVA中关于串池的问题
最近在学JAVA中串的内存表示的内容,遇到一些理解不透侧的问题:
例如:
String a = "abc";
String b = "abc";
String c = "ab"+"c";
JAVA中关于串池的有关问题
当运行第一句的时候,abc作为字符串会被放入串池中,它由a指针所指示。
当运行到第三句的时候,编译器会直接将常量“ab”和“c”相加,那么字符串ab和c是否会被放入到串池中呢?

另外有语句:
String e = new String(a);
e = e + "x";

JAVA中关于串池的有关问题
我先假设上面的问题中是肯定的,那么“x”被加入到串池中和原来e所指向的对象创建出新的对象“abcx”,那么e指针从新指向abcx,原来的对象abc没有指针指向它了,那么它会不会被JAVA的垃圾回收机制回收,“x”会不会被垃圾回收机制回收呢?

求代码大神解答谢谢了。。。


------解决思路----------------------
Java中 "abc" + '/'和"abc" + "/"的区别, 这篇博客里提到了"abc"+"/"的情况, "abc"和"/"不会被放入串池, 是否会被回收我还不知道, 感觉可能不会被回收.
------解决思路----------------------
第一个问题:
"ab"和"c"因为是字符串常量,所以他会出现在串池(我感觉就是常量池)。
然后又因为是常量相加,所以是在编译的时候相加的。所以class文件中第三句实际上已经成为String c = "abc";

第二个问题:
"x"在常量池中是不会被回收的,除非程序结束,这是JVM的规则,没有为什么。
当然也可以解释一下,因为这样可以提高效率,因为不确定接下来的程序中有没有用到”x“,假如用到了就不需要再创建x了。