It doesnt work because a is just a copied reference to the array, alterations to a, like a[0] = 1; is reflected in the calling method, because you are changing the target of the reference (i.e the array) not the reference itself. a = c, does not work because it only changes the local reference to the array not the refernce in the calling method. See a more in depth explanation here: Is Java "pass-by-reference" or "pass-by-value"?
To exchange the first to values simply do:
int temp = a[0];
a[0] = a[1];
a[1] = temp;