public class Test
{
public static void leftshift(int i, int j)
{
i+=j;
}
public static void main(String args[])
{
int i = 4, j = 2;
leftshift(i, j);
System.out.println(i);
}
}
为什么输出的i值不是6?
//这个问题设计到变量的生命周期问题
//你在一个方法中定义了2个变量,那个这2个变量的生命周期就是在这个局部的代码块
//就是我们所说的局部变量
//主函数只不过是将当前的值复制给了方法中的2个变量
//这个时候调用leftshift(),方法进栈,然后运行方法,然后方法出栈,那么在方法中的
//局部变量也随着结束,主函数依旧执行,访问的是主函数中的i,输出的是4,
//如何你想输出结果是6,你可以这样做
// public static void leftshift(int i, int j)
{
i+=j;
System.out.println(i);
} |