我想了解字符串池的工作原理,浏览了许多网站,但现在更加困惑了。请允许我在这里列出我的疑问,希望有人能帮助我理解。
1)字符串池存在于哪里?是在堆中还是在方法区中?
2)String s = "Hello world";
- 这就足以创建一个字符串。由于字符串是不可变的,一旦创建了字符串,就不能改变它们,那么使用String s = new String(“Hello World”)
创建字符串的必要性是什么呢?虽然它会强制JVM在堆中创建一个新的String对象,而不是在字符串池中创建。但是为什么需要强制JVM创建新的String对象呢?
3)字符串何时以及如何被垃圾回收?
提前感谢您的帮助。