当我这样写的时候:
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情况下:整数的副本将被更改,而原始整数将不会被更改。