我什么时候应该创建String作为new()和literal?

ahm*_*_89 2 java string

我真的不知道何时以及为什么我应该使用String的构造函数而不是文字方式.我已经看过了,发现了一些差异的答案,这些差异并不是很清楚......但是最好的做法还是"为什么?" 什么时候?"

我知道文字定义由JVM处理,但它们不由垃圾收集器处理(如静态员工,注释......)......这真的是JVM内存的问题吗?

我在这里添加了我发现的最短比较:

创建String作为new()和literal有什么区别? 当我们使用new()运算符创建字符串时,它是在堆中创建的,而不是添加到字符串池中,而使用文字创建的字符串是在存在于堆的PermGen区域中的字符串池本身中创建的.

感谢您的时间和帮助.

Dol*_*000 5

主要是,new String当你有一些动态构造char[]byte[]想要用作字符串时,你会发现自己正在使用.这可能是因为已经将数据从网络接收到byte[]缓冲区中,但是存在多种可能的原因.

另请注意,如果您希望将新字符串插入到字符串池中,则可以使用该intern()方法.

顺便说一下,实习字符串池还没有被放入permgen一段时间,而在Java 8中,permgen被完全删除了.