我真的不知道何时以及为什么我应该使用String的构造函数而不是文字方式.我已经看过了,发现了一些差异的答案,这些差异并不是很清楚......但是最好的做法还是"为什么?" 什么时候?"
我知道文字定义由JVM处理,但它们不由垃圾收集器处理(如静态员工,注释......)......这真的是JVM内存的问题吗?
我在这里添加了我发现的最短比较:
创建String作为new()和literal有什么区别? 当我们使用new()运算符创建字符串时,它是在堆中创建的,而不是添加到字符串池中,而使用文字创建的字符串是在存在于堆的PermGen区域中的字符串池本身中创建的.
感谢您的时间和帮助.
主要是,new String当你有一些动态构造char[]或byte[]想要用作字符串时,你会发现自己正在使用.这可能是因为已经将数据从网络接收到byte[]缓冲区中,但是存在多种可能的原因.
另请注意,如果您希望将新字符串插入到字符串池中,则可以使用该intern()方法.
顺便说一下,实习字符串池还没有被放入permgen一段时间,而在Java 8中,permgen被完全删除了.