当我这样写的时候:

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;
    }
}

打印x22;

当我这样写的时候:
public class test {

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

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

它不会打印x22,但会打印x5。

为什么在第二版功能中,值没有变化?它是否仅更改数组元素的值?

最佳答案

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

由于Java将值传递给,因此将发生以下情况:

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

在int情况下:整数的副本将被更改,而原始整数将不会被更改。

08-04 13:26