使用时new String("abc")
,我们知道它会在堆上创建一个对象,并将String文字放置在String池中。所以我的第二个问题是:
new StringBuilder("abc")
表现方法一样new String("abc")
?如果是,那么StringBuilder如何处理字符串池中的字符串文字?您会混淆编译时间,加载时间和运行时。
在类加载时,将字符串文字添加到常量池中。只需在类代码中的任何地方提及文字即可;您甚至不必在该类中执行任何代码行。
另一方面,表达式new String("literal")
在String
每次被求值时都会产生一个新实例。该实例不同于常量池中的实例,并且具有字符串值的副本。
StringBuilder
String
在这方面的行为与之完全相同:它是使用字符串文字值的副本进行初始化的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句