I copied an array of integers to another array using method Arrays.copyOf. If I change an element in one of the array, the corresponding member does not change accordingly.
But, when I copied an array of objects to another array of objects using the same method. And I change an element in one of the array, the corresponding member also changes accordingly.
Can someone explain why the behavior is different in both cases.
Example : Array of strings
int[] array1 = {1,2,3};
int[] array2 = Arrays.copyOf(array1, array1.length);
array1[1] = 22; // value of array2[1] is not set to 22
array1[2] = 33; // value of array1[2] is not set to 33
Example : Array of objects
Person[] AllPersons = new Person[3];
for(int i=0; i<3; i++)
{
AllPersons[i] = new Person();
}
AllPersons[2].Name = "xyz";
Person[] OtherPersons = Arrays.copyOf(AllPersons, 3); // value of OtherPersons[2].Name is also set to "xyz"
AllPersons[2].Name = "pqr"; // value of OtherPersons[2].Name is also set to "pqr"
OtherPersons[2].Name = "hij"; // value of AllPersons[2].Name is also set to "hij"