Java中静态变量有没有生命周期,java中能否定义共享全局变量?

我在一个地方给ClassA的静态变量publicStringstr传了个值“aa”,在另一个类为什么读不到?... 我在一个地方给Class A的静态变量 public String str传了个值“aa”,在另一个类为什么读不到? 展开
 我来答
nuimeng1st
2015-06-02 · TA获得超过198个赞
知道小有建树答主
回答量:153
采纳率:100%
帮助的人:127万
展开全部
任何东西都有声明周期,简单点说一段代码所有线程运行结束,程序退出,jvm中所有对象都销毁,内存被回收.具体说你的问题.类静态变量和类元信息是保存在永久代(PermGen),在类被第一次加载时在内存中分配空间,通过类名引用指向静态变量的值.形如 A.name;这个变量跟具体的类A的对象没关系.通过类对象访问的只是类变量,数据具体的类,每个类各自分配独立的空间存储自己的类变量.或者说静态变量属于jvm级别的变量.至于静态变量的声明周期,何时被销毁内存被回收,要看具体GC的实现.sun的HotSpot好像是类的字节码类元信息和类对象都无引用时生命周期结束GC回收.jvm的这块东西我也是最近刚开始看,以上的解释仅供参考,有异议大家可以一起研究下.
追问
那有没有其他办法在几个生命周期不同的类之间共享变量?
追答
几个生命周期?没太懂这句的含义.类静态变量就是全局的,所有的类共享,JVM级别的.比如java.lang.Math中的E和PI在哪访问都是一样的.final修饰不可修改.如果不是final的所有的类都可以改,就像月亮是全世界的,你在中国把它咬一口,在美国看也是被咬了一口的月亮.
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式