我想知道如果我使用内存分配有什么区别
String s = new String("This is a string");
System.out.println(s);
editText.setText(s);
和
System.out.println("This is a string");
editText.setText("This is a string");
这两个步骤有什么不同吗??
最佳答案
在第一种情况下,您使用 new 运算符初始化字符串,因此您的字符串将在堆中创建,因为您的字符串将被视为对象。
在第二种情况下,您直接初始化字符串,因此它将存在于字符串常量池中,因为您的字符串将被视为文字。字符串文字被创建为字符串常量池。
从技术上讲,字符串常量池在java中具有高效的内存管理,因为字符串池值如果不使用就会被垃圾收集。
关于java - java中将字符串分配给变量和直接使用引号之间的内存分配差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22704920/