JAVA小菜鸟问题
请问一下这段程序为什么I=10,J=40..谢谢。。
public class t5 {
static int j=20;
public static void main(String[] args) {
int i=10;
t5 t=new t5();
t.method(i);
System.out.println(i);
System.out.println(j);
}
public void method(int x)
{
x=x*2;
j=j*2;
}
}
------解决方案--------------------首先,java中传递的是值参数,所有I的值不变。
j = j*2 ,因为J=20,所以J=40;
------解决方案--------------------我也不怎么懂。。
------解决方案--------------------1. x = x * 2 , 方法调用以后,x是改变了,可是它得生命周期结束了,所以没有改变 i 的值。
2. 因为 j 是静态变量,对每个类都一样。调用对象得方法得到j = j * 2;故而 j = 40;
------解决方案--------------------t.method(i);
只是把i的值传给参数x,方法里面的x=x*2,改变的只是局部变量x的值,此时在这个method()方法加一个打印语句
System.out.println(x);会输出你想要的20,i 的值是没有改变的!
由于j 被声明为静态变量,是存在内存的数据区里,初始化为20,调用method()方法时,执行j=j*2;会修改j的值。
------解决方案--------------------呵呵,学习了!
------解决方案--------------------嗯,可能楼主还得多了解一下类变量,局部变量之间的区别哦...
------解决方案--------------------函数参数是基本类型时是传值,是对象类型时是传该对象的引用
------解决方案--------------------看一贴,了解学习相当多啊