java中的字符串创建

时间:2010-10-03 14:47:59

标签: java string

在java中可以使用new运算符或使用+和+ =创建String。那么,所有这些字符串创建技术是否检查字符串池中是否已存在该字符串。如果他们dint那么String创建技术将检查池。

2 个答案:

答案 0 :(得分:5)

不,他们没有。

简单示例:

    String s = new String("hell");
    String hello = "hello";
    s += 'o';
    System.out.println(hello == hello.intern()); //True
    System.out.println(s == s.intern());         //False
    System.out.println(s == hello);              //False
    System.out.println(s.intern() == hello);     //True
    //To sum up : s != s.intern() == hello.intern() == hello

This code on ideone

这里新版本的“s”不是“你好”的内部版本

如果您想拥有特定字符串的池版本,可以使用intern()方法(就像我上面所做的那样)。这样你肯定会有相同的参考。


资源:

答案 1 :(得分:3)

只有字符串常量和文字才会自动实现。如果要连接或以其他方式创建字符串,则需要实际调用intern()方法。见http://download.oracle.com/javase/1.4.2/docs/api/java/lang/String.html#intern()。