如下面一段代码public class TestInt
{
public int aa(int i)
{
return i+4;
}
public static void main(String [] args)
{
int i=3;
aa(i);
System.out.println(i);
}
}怎么能把i的值改变呢?
{
public int aa(int i)
{
return i+4;
}
public static void main(String [] args)
{
int i=3;
aa(i);
System.out.println(i);
}
}怎么能把i的值改变呢?
public static void aa(int[] i) {
i[0] += 4;
}
public static void main(String [] args) {
int[] i= {3};
aa(i);
System.out.println(i[0]);
}
}
改为:i= aa(i);
不就可以了吗?
你这样是改变不了i的值的,LZ的代码存在一个错误,主函数main()这个静态方法无法
引用非静态方法 aa(int)的。
函数调用时,参数传递的方式主要有两种: 值传递和引用传递。
Java使用的是值传递。值传递是把变量的值、常数或常量传递给参数。而引用传递,是把变量的所在内存中的地址传递给参数,参数通过地址找到变量的值。
无论是在C、c++还是java中传值是无法改变实参的值的,
就比如要交换两个整型数的值。
java中得通过传引用的方式改变实参的值。
所以可以传通过数组这种引用方式来改变实参的值!一楼采用的就是这个传数组引用的方法,
二楼的方法也行,不过不太好。