static变量是属于类的,一般情况下,程序执行结束后,类所占空间会被回收,
static变量自然就被销毁了。 如下所示:
public class StaticVar{
public static int num = 10;
}
public class StaticTest1{
public void
main(String[] args)
{
StaticVar.num++;
System.out.println("value of
number is :"+StaticVar.num);
}
}
public class StaticTest2{
public void
main(String[] args)
{
StaticVar.num++;
System.out.println("value of
number is :"+StaticVar.num);
}
}
当运行StaticTest1,你会得到一个值为11;
当运行StaticTest2,你会同样得到11。
但是,当两个类在同一个作用域调用第三个类中的静态变量时,结果就会不一样,如下所示:
public class StaticVar{
public static int num = 10;
}
public class StaticTest1{
public void add()
{
StaticVar.num++;
System.out.println("value of
number is :"+StaticVar.num);
}
}
public class StaticTest2{
public void
show()
{
StaticVar.num++;
System.out.println("value of
number is :"+StaticVar.num);
}
}
public class StaticTest3{
StaticTest1 st1= new StaticTest1();
StaticTest2 st2= new StaticTest2();
public void main(String[] args)
{st1.add();
st2.show();
}
}
运行StaticTest3 后会得到11
和12 两个结果,所以对于静态变量,只有不存在外部引用时才会被gc,否则不会,前面类对此变量的修改会影响后面的结果。