I am declaring an array myArray in main method and passed the same array in doIt(myArray) method.
When I took another array variable in doIt() method and assign myArray to it. And then I printed the myArray in main method.
But I am doing same thing with integer and String, the changes made in respective method do not affect the output.
My Code is
public class ChangeIt {
    public static void main(String[] args) {
        int[] myArray = {1,2,3,4,5};
        new ChangeIt().doIt(myArray);
        for (int i = 0; i < myArray.length; i++) {
            System.out.print(myArray[i] + " ");
        }
        String str= "Gaurav";
        new ChangeIt().printString(str);
        System.out.println("\n"+ str);
        int num = 5;
        new ChangeIt().printNum(num);
        System.out.println(num);
    }
    private void doIt(int[] z) {
        int[] A = z;
        A[0] = 99;
    }
    private void printString(String s){
        String s2 = s + "Kukade";
    }
    private void printNum(int x) {
        int y = x+1;
    }
}
The output is
99 2 3 4 5
Gaurav
5
So, what is happening? Why it is printing 99 instead of 1?
 
    