JAVA里static 变量在程序执行结束后是否被消毁。

来源:百度知道 编辑:UC知道 时间:2024/06/07 06:34:52

//static变量是属于类的,程序结束后,类所占空间会被回收,
//那么static变量自然也就被销毁了。给你个例子:
public class TestStatic001 {
public static void main(String[] args){
MyStatic.num ++;
System.out.println(MyStatic.num);;
}
}
public class TestStatic002 {
public static void main(String[] args){
System.out.println(MyStatic.num);
}
}
public class MyStatic {
static{System.out.println("被加载……");}
public static int num = 15;
}
//当运行TestStatic001时,会打印MyStatic类的静态块消息,
//且static变量值打印为16,
//运行TestStatic002时也会打印MyStatic类的静态块消息,
//且static变量值为15,如果它在程序一结束后没被销毁,
//那么程序二时就也应该是16的(static变量只会有一个),
//因此可以看出,static变量在程序运行结束后是会被销毁的。

tudou869,你给的例子不正确。
1.TestStatic001,2是两个不同的类,在它们各自的类中调用第三个类的静态字段,当然是各自用各自的,当1,2各自退出方法后,这个作用域不存在了,对于1,2这两个类来说没有了MyStatic.num的引用而已。
2.你看当这两个类在同一个作用域时调用静态字段的例子:
public class ClassTest {
public static void main(String[] args) {
TestStatic00