Skip to content
Advertisement

Why do arrays change in method calls? [duplicate]

When I write like this:

public class test {

    void mainx()
    {
        int fyeah[] = {2, 3, 4};
        smth(fyeah);
        System.out.println("x"+fyeah[0]);
    }

    void smth(int[] fyeah)
    {
        fyeah[0] = 22;
    }
}

It prints x22;

When I write like this:

public class test {

    void mainx()
    {
        int fyeah = 5;
        smth(fyeah);
        System.out.println("x"+fyeah);
    }

    void smth(int fyeah)
    {
        fyeah = 22;
    }
}

It doesn’t print x22, but prints x5.

Why, in the second version function, doesn’t the value change? Does it change values only for array elements?

Advertisement

Answer

The fyeah variable in your first example contains a reference to an array (not an array), while the fyeah integer in your second example contains an integer.

Since Java passes everything by value the following will happen:

In the array case: A copy of the array reference will be sent, and the original array will be changed.

In the int case: A copy of the integer will be changed, and the original integer will not be changed.

User contributions licensed under: CC BY-SA
7 People found this is helpful
Advertisement