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情况下:将更改整数的副本,并且不会更改原始整数.
| 归档时间: |
|
| 查看次数: |
18260 次 |
| 最近记录: |