Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java字符串参数存储器_Java - Fatal编程技术网

Java字符串参数存储器

Java字符串参数存储器,java,Java,对于这种方法 public void testMethod( String paramString) { String copyString = paramString; } copyString是否在paramString的内存中创建新副本 否,您提供了对同一对象的引用 这里最重要的部分是字符串是不可变的。即使这两个对象具有对同一对象的引用,但一旦指定了引用,它们也不会相互影响 由于字符串是不可变的,因此在一个引用中更改字符串的值只需创建一个新字符串并使引用指向新字符串。旧的参考将保持不变

对于这种方法

public void testMethod( String paramString)
{
 String copyString = paramString;
}

copyString是否在paramString的内存中创建新副本

否,您提供了对同一对象的引用

这里最重要的部分是字符串是不可变的。即使这两个对象具有对同一对象的引用,但一旦指定了引用,它们也不会相互影响


由于字符串是不可变的,因此在一个引用中更改字符串的值只需创建一个新字符串并使引用指向新字符串。旧的参考将保持不变

在您的示例中,
paramString
是引用类型的变量,确切地说,
String
paramString
保存对
String
对象的引用值。当你这样做的时候

String copyString = paramString;

您正在复制该引用的值,并将该副本分配给第二个变量,
copyString
。您不是在复制对象,而是在复制引用的值。

就像其他答案的状态一样,您正在使
copyString
指向
paramString

如果要生成
paramString
副本,则应执行此分配:

String copyString = ((String)paramString.clone());
clone()
是一个对象的方法,这意味着任何类中的每个对象都将拥有它,并返回一个对象的新实例和另一个引用或简单的副本。当它返回一个对象时,必须进行正确的强制转换