Tuesday, 25 July 2017

java array pass by reference does not work?

I thought almost all languages, including java, pass array into function as reference (modifiable).



But somehow it does not work here, and the testArray is still 1,2,3 with size of 3.



Strange enough, when if I change result[i] = 2 to a[1] =2 it works. It did pass by reference.



What is wrong with this code?




At the end, I had a = result; (which update the a). Did result get removed from stack. Is that why I still get to the original a?



I am confused.



Thanks!



class Test
{
public static void main(String[] args)

{

int[] testArray = {1,2,3};
equalize(testArray, 6);

System.out.println("test Array size :" + testArray.length);
for(int i = 0; i < testArray.length; i++)
System.out.println(testArray[i]);
}


public static void equalize(int[] a, int biggerSize)
{
if(a.length > biggerSize)
throw new Error("Array size bigger than biggerSize");

int[] result = new int[biggerSize];
// System.arraycopy(a, 0, result, 0, a.length);
// int array default value should be 0
for(int i = 0; i < biggerSize; i++)
result[i] = 2;


a = result;
}
}

No comments:

Post a Comment

casting - Why wasn&#39;t Tobey Maguire in The Amazing Spider-Man? - Movies &amp; TV

In the Spider-Man franchise, Tobey Maguire is an outstanding performer as a Spider-Man and also reprised his role in the sequels Spider-Man...