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

 我来答
tudou869
2008-05-09 · TA获得超过513个赞
知道小有建树答主
回答量:527
采纳率:0%
帮助的人:354万
展开全部
//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变量在程序运行结束后是会被销毁的。
南风起航
2008-05-09 · TA获得超过1212个赞
知道小有建树答主
回答量:205
采纳率:0%
帮助的人:165万
展开全部
如果某个方法结束了,这个方法里面的静态变量不会立即销毁,
当然如果主方法main()结束了,系统会回收这个程序所占用的所有的内存空间,不管是堆还是栈里面
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
扬自飞扬
2008-05-09 · TA获得超过369个赞
知道小有建树答主
回答量:313
采纳率:0%
帮助的人:0
展开全部
tudou869,你给的例子不正确。
1.TestStatic001,2是两个不同的类,在它们各自的类中调用第三个类的静态字段,当然是各自用各自的,当1,2各自退出方法后,这个作用域不存在了,对于1,2这两个类来说没有了MyStatic.num的引用而已。
2.你看当这两个类在同一个作用域时调用静态字段的例子:
public class ClassTest {
public static void main(String[] args) {
TestStatic001 a = new TestStatic001();
TestStatic002 b = new TestStatic002();

a.add();
b.show();
}
}

class TestStatic001 {
public void add() {
MyStatic.num++;
System.out.println(MyStatic.num);
}
}

class TestStatic002 {
public void show() {
System.out.println(MyStatic.num);
}
}

class MyStatic {
static {
System.out.println("被加载……");
}

public static int num = 15;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友e6374e08f
2008-05-09 · 超过16用户采纳过TA的回答
知道答主
回答量:37
采纳率:0%
帮助的人:51万
展开全部
恩会的程序运行结束后操作系统会回收程序占用的内存空间。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友5e72356ca
2008-05-09 · 超过16用户采纳过TA的回答
知道答主
回答量:39
采纳率:0%
帮助的人:46.8万
展开全部
没有外部引用就会被gc否则不会。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式