java - java中将字符串分配给变量和直接使用引号之间的内存分配差异

标签 java

我想知道如果我使用内存分配有什么区别

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/

相关文章:

java - 上下文菜单不出现

java - 是否可以使用 JAXB 根​​据某些属性值获取 XML 元素?

java - 在View上持续控制旋转动画

java - 无法访问 SwingWorker 的变量

java - 使用 jackson 将键值对添加到 jsonobject

java - 在不知道所需对象数量的情况下,如何为同一个类创建多个对象?

java - 如何将框架布局的 y 值设置为屏幕高度的 3/4?

java - 寻找 spring-hibernate3-2.0.8 源

java - 语义网中的 SWI-Prolog

java - 在 JTable 中将数字格式化为货币?