本帖最后由 王舜民 于 2012-8-13 22:18 编辑
public class TestDemo
{
public static void leftshift(int i, int j)
{
i+=j;
}
public static void main(String args[])
{
int i = 4, j = 2;
leftshift(i, j); //i 经过计算不是6了吗 怎么打印结果为4啊?不解啊
System.out.println(j); //打印的值是根据上面主函数 int i = 4, j = 2; 而定的
}
}
System.out.println(j); 打印的是j
永远是2不会改变。除非你打的是 i 结果才永远为4.
=
/这里你你调用了leftshift(i,j)方法,你需要将i和j的值作为参数传递给此函数,而在java中基本类型作为参数传递时,无论你在leftshift(i,j)方法怎么折腾,主函数i,j值是不会改变的。还有在Java中对象作为参数传递时,是把对象在内存中的地址拷贝了一份传给了参数。你可以百度下“形参和实参”加深理解
不信你可以改成这样就知道了
package cn.itcast;
public class TestDemo
{
public static void leftshift(int i, int j)
{
i=444;
j=222;
}
public static void main(String args[])
{
int i = 4, j = 2;
leftshift(i, j); //
System.out.println(i); 还是 4
System.out.println(j); 还是 2
}
}
|