java - 我什么时候应该使用 String s = new String ("Hello World")?

标签 java string

<分区>

Possible Duplicate:
What is the purpose of the expression “new String(…)” in Java?

我知道应该避免 String s = new String("Hello World"),因为它会为“Hello World”创建额外的空间,这在大多数情况下是不必要的。

解释为什么要避免 String s = new String("Hello World") 的相关问题在这里:

What is the difference between "text" and new String("text")?

但是我们什么时候需要使用 String s = new String("Hello World"),而不是 String s = "Hello World"?这是我遇到的一道面试题。

如果在大多数情况下应该避免 String s = new String("Hello World"),为什么 Java 仍然允许这样做?

最佳答案

1) 字符串 s = "文本"; 此语法将为堆中的“文本”分配内存。每次将此“文本”分配给其他变量时,它每次都会返回相同的内存引用。 对于 Exp -

   String aa = "text";
   String bb = "text";

   if(aa == bb){
       System.out.println("yes");
   } else {
       System.out.println("No");
   }

将打印 - 是

但是
String s = new String("文本"); 始终在内存中创建一个新位置并每次返回一个新引用。 对于 Exp -

   String aa = new String ("text");
   String bb = new String ("text");

   if(aa == bb){
       System.out.println("yes");
   } else {
       System.out.println("No");
   }

将打印 - 否

关于java - 我什么时候应该使用 String s = new String ("Hello World")?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10829707/

相关文章:

java - vaadin 7.75 如何将组合框添加到网格中?

java - Ripple Android L 预览触摸

java - 通过调用另一个java程序捕获异常

c - 通过动态分配的结构变量获取用户输入的字符串

java - 使用正则表达式测试 Servlet 中的字符串

Java SAXParser 无法读取资源目录中导入的 XML 文件

java - 如何使用Java将数据从一个ArrayList添加到另一个ArrayList?

java - Java的控制台输入大量数据

Java:尽管字符串是不变的,但如何将字符串设为 "mutate"?

c - 如何使用宏在 c 中使用标记粘贴连接两个标记来进行字符串化?