Java 是否为从字符串池分配字符串的有效方案?

Java 是否为从字符串池分配字符串的有效方案?,java,Java,我被给予了以下条件 String A="a"; String B="b"; String c="a"+"b"; 我的问题是字符串c是新创建的还是从字符串池中分配了值“a”和“b”,以及根据上述问题形成的字符串总数?是的,c是新创建的。Java中的字符串是有效的(即,一旦创建,它们就永远不会更改)。这样做的后果之一是,每当您执行更改字符串的操作时,都会返回一个新的、不同的对象 因此,在您的示例中,创建了3个字符串。以这两个String对象为例: String a = "a"; String b

我被给予了以下条件

String A="a";
String B="b";
String c="a"+"b";

我的问题是字符串c是新创建的还是从字符串池中分配了值“a”和“b”,以及根据上述问题形成的字符串总数?

是的,c是新创建的。Java中的字符串是有效的(即,一旦创建,它们就永远不会更改)。这样做的后果之一是,每当您执行更改字符串的操作时,都会返回一个新的、不同的对象


因此,在您的示例中,创建了3个字符串。

以这两个
String
对象为例:

String a = "a";
String b = "b";
String c = "a" + "b";
String d = "ab";
编译器创建并汇集三个
String
对象。下面逐行解释

  • 第1行:
    “a”
  • 第2行:
    “b”
  • 第3行:
    “a”+“b”
    是编译时的计算机,被视为文本。因此,为
    “ab”
  • 第4行:
    “ab”
    已在池中

按照相同的指导原则,您的示例生成了3个字符串对象。

-1:关于字符串池,已经有很多答案了,我想知道你怎么能问这个问题,除非你根本没有搜索过。这里有一个可能的重复:我知道它,甚至我读了好几遍,但在阅读一篇文章时有点困惑