数组中的数组是否有变化?

goo*_*ing 14 java arrays evaluation-strategy

我写这样的时候:

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

它打印x22;

我写这样的时候:

public class test {

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

    void smth(int fyeah)
    {
        fyeah = 22;
    }
}
Run Code Online (Sandbox Code Playgroud)

它不打印x22,但打印x5.

为什么在第二个版本函数中,值不会改变?它是否仅为数组元素更改值?

aio*_*obe 22

fyeah一个示例中的变量包含对数组(不是数组)的引用,而fyeah第二个示例中的整数包含整数.

由于Java 按值传递所有内容,因此会发生以下情况:

在数组的情况下:将发送数组引用的副本,并将更改原始数组.

在int情况下:将更改整数的副本,并且不会更改原始整数.