我想创建一个字符串的副本,而没有字符串变量引用前一个字符串。 toString()方法会成为解决方案吗?
换句话说,String.toString()是否返回其字符的副本而不是对其自身的引用?
答案 0 :(得分:7)
不,它返回String
对象本身。你可以做到
String copy = new String(myString.toCharArray());
或
String copy = new String(myString); // may use same char[] instance
请注意String是不可变的,因此通常您无需复制它。
答案 1 :(得分:3)
不,toString
将返回String
本身。如果你想要一份副本,你应该使用
String newString = new String(oldString);
但JDK中字符串的内部实现使用字符串池,因此它们可以引用相同的内部字符串。
在任何情况下,要求复制都没有意义,因为它们是不可变的:除非您在创建副本时修改副本,否则完全没有意义。
答案 2 :(得分:0)
String s1 = "123";
String s2 = "123";
这两个是相同的字符串。
答案 3 :(得分:0)
类Object的toString
方法返回一个字符串,该字符串由对象为实例的类的名称组成。
toString():这将返回一个String对象,表示此Integer的值。
toString(int i):返回表示指定整数的String对象。
System.out.println("str.toString: " + str.toString());