Java 字符串内存分配

Java 字符串内存分配,java,Java,哪一个更好 System.out.println("hello world"); 或 对于这个简单的例子,内存分配没有区别。在这种情况下没有区别 重要的是要了解引用是如何工作的,并且局部变量不同于它们所引用的对象。局部变量本身所需的内存是微不足道的;如果局部变量使代码更具可读性,那么您应该毫不犹豫地声明局部变量 例如,考虑以下代码: String s1 = "a very long string..."; String s2 = s1; 此代码声明了两个String引用,但它们都引用相同的S

哪一个更好

System.out.println("hello world");


对于这个简单的例子,内存分配没有区别。

在这种情况下没有区别

重要的是要了解引用是如何工作的,并且局部变量不同于它们所引用的对象。局部变量本身所需的内存是微不足道的;如果局部变量使代码更具可读性,那么您应该毫不犹豫地声明局部变量

例如,考虑以下代码:

String s1 = "a very long string...";
String s2 = s1;
此代码声明了两个
String
引用,但它们都引用相同的
String
对象。在这种情况下,内存需求不会增加一倍

永远不要低估编译器在优化代码方面的智慧。考虑下面的例子:

System.out.println("Hello world!");
System.out.println("Hello world!");
System.out.println("Hello world!");
事实上,上面的代码片段没有在内存中存储三次string对象
“Hello world!”
!该文本在内存中只存储一次

工具书类

每个字符串文字都是对
类字符串
实例的引用<代码>字符串对象具有常量值。字符串文本——或者更一般地说,是常量表达式的值的字符串——被“插入”,以便使用该方法共享唯一的实例

相关问题
    • “字符串”
      vs
      新字符串(“字符串”)
查看以了解JVM如何在内部处理字符串。

没有区别

但是,如果你要比较

String s=new String("hello world");
System.out.println(s);


然后会有一个潜在的差异,因为后一种情况是字符串内部化的候选,而前一种情况不会。像这样的微优化通常不值得付出努力。
String s=new String("hello world");
System.out.println(s);
System.out.println("hello world");