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

为什么t的值不变

public class A
{
static int t= 6;
Object obj= new Object();

public static void main(String args[])
{
A a= new A();
a.func(a.t,a.obj);
System.out.println(t);
}

public void func(int t,Object obj)
{
t=7;
obj=null;
}
}

------解决方案--------------------
public void func(int t,Object obj)
    {
        t=7;   
        obj=null;
    }
这里的 t 只是func方法里的一个局部变量,并不是成员变量int   t;要用this.t=7;才能给成员变量t赋值。
这么跟你说这两个t的区别吧:
我(成员变量t)知道一条路线可以去某一个地方(成员变量t=6),然后通过func方法把路线告诉了你(局部变量t),于是你也知道了怎么去那里,但是在func方法里面有人又把你的路线改变了(局部变量t=7),于是你又不知道怎么去那个地方了,但是我(成员变量t)还是知道怎么去那个地方,因为改变的是你的路线而不是我的路线。