相关疑难解决方法(0)

关于Java的字符串池的问题

考虑以下代码:

String first = "abc"; 
String second = new String("abc");
Run Code Online (Sandbox Code Playgroud)

使用new关键字时,Java会abc String再次创建吗?这会存储在常规堆还是String池中?多少人String在将s结尾String池?

java string string-pool

68
推荐指数
3
解决办法
2万
查看次数

Java 7 - String.intern()行为

我已经阅读了关于如何检查字符串是否在Java中实现的答案,但我不理解以下结果:

String x = args[0]; // args[0] = "abc";
String a = "a";
String y = a + "bc";
System.out.println(y.intern() == y); // true
Run Code Online (Sandbox Code Playgroud)

但是如果我声明一个字符串文字:

String x = "abc";
String a = "a";
String y = a + "bc";
System.out.println(y.intern() == y); // false
Run Code Online (Sandbox Code Playgroud)

此外,没有任何字符串文字,args[0]似乎直接实习:

// String x = "abc";
String y = args[0];
System.out.println(y.intern() == y); // true (???)
// false if the first line is uncommented
Run Code Online (Sandbox Code Playgroud)

为什么y.intern() == y更改取决于是否x是文字,即使是在使用命令行参数时的示例?

我知道 …

java string pool java-7

4
推荐指数
1
解决办法
433
查看次数

标签 统计

java ×2

string ×2

java-7 ×1

pool ×1

string-pool ×1