字符串池应该在堆中保存,只不过比较特殊,堆内存中其他的对象,如果没有引用指向了的话,就有可能随时被垃圾处理机制清除,但是字符串池不会,他会一直保存着。
至于String s ="ABC"; String s = new String("abc"); s代表的是一个String的引用, 而=号后面的则代表指向的是,一个指向字符串池的对象,一个指向了堆中的对象,当使用 String s ="abc"时候,.如果字符池没有,则会在堆内存中创建一个然后在字符串池复制一份,并指向进去,但是String s = new String("abc");则是不管字符串池里有没有都会在堆中重新创建一个对象,然后把地址指向s引用。 |