我一直想知道在Java中创建String的最有效方法是什么。我的意思是指不会改变价值的字符串。
示例:
String prefix = "Hi, I am ";
prefix
不会改变,但后缀可能会改变。
我不想让prefix
成为static final
变量,因为即使很少使用该类,它仍然会在JVM中保持活跃状态... bla bla。
当我执行以下操作时:
String fullWord = ("Hi, I am "+_postFix);
我猜测"Hi, I am"
字符串值将保留在Java字符串池中,并且我没有将前缀声明为变量的“开销”。
意思是我的问题归结为:
当我没有使用new
关键字声明String变量时,是否始终使用Java String池?
在使用String之前将其声明为变量是否更好?
字符串池如何工作? JVM是否检测到经常使用相同的String值并继续在JVM内存中引用该字符串?
答案 0 :(得分:10)
String
都是实习。String
都被实现,String
返回的String.intern
也是如此(在典型的实现中,这是一种缓慢的方式)。