【发布时间】:2018-09-03 06:41:26
【问题描述】:
我们知道下面的字符串保存在字符串常量池中。
String a = "AB";
如下创建的String对象将保存在Heap中。
String b = new String("AB");
String e = b.concat("C");
此时, 谁能解释以下字符串的保存位置?
String c = new String("A"+ "B");
String d = "A" + "B";
如果你能清楚地解释原因,不胜感激。
【问题讨论】:
-
如果你在谈论 Java,我相信 + 两个参数都是编译时常量的操作在编译时被解析 - 所以那些连接的字符串最终会在字符串常量池中。在您的示例中, c 的 String 构造函数的参数和 d 的值将是常量池中的相同常量。 c,OTOH,将是对在堆上分配的字符串的引用。
标签: string heap-memory string-pool