You pass a reference to the array (well, technically you pass the value of the internal pointer to the array, but more or less the same) not the array itself.
Specifically the method declaration:
public void doStuff(int[] john) {
}
does not dictate the size of the array needed to be passed. (in fact, it can't restrict the size, only the type).
What you want sounds like it should be easily accomplished using something like this:
public void doStuff(int[] john) {
int arrayLength = Math.min(220, john.length);
for (int i = 0; i < arrayLength; i++) {
//doStuff
}
}
That will allow you to access only the first 220 items (or fewer if you pass in a small array).
If you actually want to copy the values between the arrays, you will need to either use System.arraycopy or manually assign jim = john; (System.arraycopy is much more efficient).