I know when copy array in java one need copy each element individually, but it seems use arrayA = arrayB, and later modify arrayB will also modify arrayA. Could anyone explain why is that? For example:
int i;
int[] arrayA = new int[ ]{0,1,2,3,-4,-5,-6,-7};
int[] arrayB = new int[8];
// directly use = gives unexpcted result
arrayB = arrayA;
for (i = 0; i < arrayA.length; ++i) {
if (arrayA[i] < 0) {
arrayA[i] = 0;
}
}
/*
The normal method
for (i = 0; i < arrayB.length; ++i) {
if (arrayB[i] < 0) {
arrayB[i] = 0;
}
}
*/
System.out.println("\nOriginal and new values: ");
for (i = 0; i < arrayA.length; ++i) {
System.out.println("arrayA: " +arrayA[i] + " ArrayB: " + arrayB[i]);
}
System.out.println();
The out put is:
Original and new values:
arrayA: 0 ArrayB: 0
arrayA: 1 ArrayB: 1
arrayA: 2 ArrayB: 2
arrayA: 3 ArrayB: 3
arrayA: 0 ArrayB: 0
arrayA: 0 ArrayB: 0
arrayA: 0 ArrayB: 0
arrayA: 0 ArrayB: 0