有这个方法
void doSomething(String input)
{
//trick for create new object instead of reference assignment
String workStr= "" + input;
//work with workStr
}
哪种Java方法可以做到这一点?
编辑
- 如果我使用输入变量作为输入=某些东西,那么 Netbeans 会警告分配值到方法参数
- 如果我使用新的字符串(输入)创建它,它会警告使用字符串构造函数
也许解决方案不是不为输入分配任何内容,或者只是忽略警告。
String copy = new String(original);
初始化新创建的 String 对象,使其表示与参数相同的字符序列;换句话说,新创建的字符串是参数字符串的副本。除非需要原始副本的显式副本,否则不需要使用此构造函数,因为字符串是不可变的。
http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#String(java.lang.String)
Java 中的String
是不可变的,这意味着您无法更改对象本身(任何返回字符串(例如子字符串)的操作都将返回一个新字符串)。
这意味着无需为 String
创建新对象,因为您无法修改原始对象。 任何这样做的尝试都只会导致内存浪费。
仅当相关对象是可变的时,分配引用才是一个问题,因为一个对象中的更改将反映在同一引用的所有其他副本中。