我有这么多的用例,我必须初始化一个大的字符串,而不是在其他地方使用相同的字符串。
//Code-1
public class Engine{
public void run(){
String q = "fjfjljkljflajlfjalkjdfkljaflkjdllllllllllllllsjfkjdaljdfkdjfnvnvnrrukvnfknv";
//do something
}
}我很少调用这个run方法。
在代码1中,字符串fjfjljkljflaj.....将被添加到字符串池中,并且永远不会被GC收集。所以我想用new运算符进行初始化。
//Code-2
public class Engine{
public void run(){
String q = new String("fjfjljkljflajlfjalkjdfkljaflkjdllllllllllllllsjfkjdaljdfkdjfnvnvnrru");
//do something
}
}第二个代码会节省一些内存吗?还是会有其他因素需要考虑才能决定哪一个是有效的?
发布于 2021-07-29 17:00:23
第一件事--如果我们使用intern new String()对象创建,则除非调用()方法,否则不会在文字池中创建常量。
在优化方面,我们应该尽可能使用字符串文字表示法。它更容易阅读,也给了编译器一个优化我们代码的机会。
https://stackoverflow.com/questions/67920181
复制相似问题