String s1="helloword";
String s2="helloword";
s1,s2指向的是同一个字符串常量池中的对象"helloword"。
String s3=new String("helloword");
String s4=new String("helloword");
这个构造函数在API中的解释是:
初始化一个新创建的 String 对象,使其表示一个与参数相同的字符序列;换句话说,新创建的字符串是该参数字符串的副本。
所以s3和s4的指向不同!
至于
StringBuffer s = new StringBuffer("helloworld");
String ss = s.toString();
JDK这个方法是:
- public String toString() {
- // Create a copy, don't share the array
- return new String(value, 0, count);
- }
复制代码
显然,这个是重新new了一个字符串对象出来的 |