日期:2014-05-20  浏览次数:20679 次

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的值。
------解决方案--------------------
呵呵,学习了!
------解决方案--------------------

嗯,可能楼主还得多了解一下类变量,局部变量之间的区别哦...

------解决方案--------------------
函数参数是基本类型时是传值,是对象类型时是传该对象的引用
------解决方案--------------------
看一贴,了解学习相当多啊