System.arrayCopy() copies object or reference to object?
<p>I am having a final class <code>NameAndValue</code>. I copied an array of <code>NameAndValue</code> objects using <code>System.arrayCopy()</code> and when i changed a <code>NameAndValue</code> object in copied array, it gets reflected in the original array.</p>

<pre><code>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 &lt; 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("-----------------------");
        }
    }
}
</code></pre>

<p>I am getting output as,</p>

<pre><code>0
1
-----------------------
1
2
-----------------------
</code></pre>

<p>I should have got output as 25 and 26 in all the cases,right?? why does it get changed??</p>
