package P;public class P1 extends Thread {
static String sName = "vandeleur"; public static void main(String argv[]) {

P1 t = new P1();
t.piggy(sName);
System.out.println(sName);
} public void piggy(String sName) {
sName = sName + " wiggy";
start();
} public void run() {
for (int i = 0; i < 4; i++) {
sName = sName + " " + i;
}
}
}
运行结果为什么是:vandeleur而不是:vandeleurwiggy
求详解!

解决方案 »

  1.   

    这不需要什么详解了,楼主搞清楚局部变量的有效范围就好了。在方法piggy中的sName是属于该方法的局部变量,它并不是外面那个类变量。
    在方法中同名的变量把类变量给隐藏掉了,这里实际上用的是在方法中定义的局部变量而已,外面那个类变量并没有动。
      

  2.   

    在这public void piggy(String sName) {
    sName = sName + " wiggy";
    start();
    }
    中的sName是你传过来的那个变量不是类中的属性,你要改成this.sName = this.sName+sName;才行。
      

  3.   

    this.sName = this.sName + " wiggy";