मैं एक अंतिम वर्ग NameAndValue
हो रहा है। मैं System.arrayCopy()
का उपयोग कर NameAndValue
वस्तुओं की एक सरणी की नकल की और जब मैं की नकल की सरणी में एक NameAndValue
वस्तु बदल गया है, यह मूल सरणी में परावर्तित होती है।System.arrayCopy() वस्तु ऑब्जेक्ट या ऑब्जेक्ट का संदर्भ देता है?
public final class NameAndValue
{
public String name;
public String value;
public NameAndValue()
{
}
public NameAndValue(String name,String value)
{
this.name = name;
this.value = value;
}
}
public class Main
{
public static void main(String[] args)
{
NameAndValue[] nv = new NameAndValue[4];
nv[0] = new NameAndValue("A", "1");
nv[1] = new NameAndValue("B", "2");
nv[2] = new NameAndValue("C", "3");
nv[3] = new NameAndValue("D", "4");
NameAndValue[] nv2 = new NameAndValue[4];
System.arraycopy(nv, 0, nv2, 0, 2);
nv2[2] = new NameAndValue("Y","25");
nv2[3] = new NameAndValue("Z","26");
for (int i = 0; i < 2; i++)
{
NameAndValue[] nv3 = new NameAndValue[4];
System.arraycopy(nv2, 0, nv3, 0, 4);
nv3[2].value = String.valueOf(i);
nv3[3].value = String.valueOf(i+1);
System.out.println(nv2[2].value);
System.out.println(nv2[3].value);
System.out.println("-----------------------");
}
}
}
मैं के रूप में उत्पादन हो रही है,
0
1
-----------------------
1
2
-----------------------
मैं 25 और सभी मामलों में 26 के रूप में उत्पादन मिल गया है चाहिए, सही ?? यह क्यों बदल जाता है ??
मैं बहुत कुछ (कोर जावा एपीआई और विभिन्न लोकप्रिय पुस्तकालयों में) मिल गया है जो उथले प्रतियां वास्तव में दस्तावेज़ों में स्पष्ट रूप से यह नहीं बताती हैं - मुझे लगता है कि यह "उथले मान लीजिए जब तक कि अन्यथा नहीं कहा जाता"। – berry120
@ बेरी 120: हाँ। और यह एक उचित धारणा बनाने के लिए है। मैंने इसे स्पष्ट कर दिया है, लेकिन मुझे लगता है कि ब्रेवटी में कुछ मूल्य है।:-) –
ओह सहमत हो गया, मैं बस इसे इंगित कर रहा था :-) – berry120