我在看书的时候看到了一个矛盾的点,也许是我哪里理解错了
编译期产生的字面量,会在类加载的时候存放到常量池里
比如说 我的代码里有这么一行
String s="字符串" ;
那么加载这个类的时候,就会在常量池里创建这个对象,然后这段代码
并不是马上就用到,假设一小时后才用到,那么这个字符串对象马上就被回收了,
因为没有一个String的引用指向它。刚刚创建的对象就被回收了,这里我觉得有些矛盾。
然后一个小时后执行String s="字符串" ;这段代码,他的对象从哪里?类加载时建立的 "字符串" 对象已经移出常量池了啊。
存放到常量池里的字符串是不会被回收的。