class A
{
private static int A=3; //这个呢??
int a = 222; //这个呢??
public void fun()
{
int a=111; //这个分配在哪里???
System.out.println("a="+a);
}
}
{
private static int A=3; //这个呢??
int a = 222; //这个呢??
public void fun()
{
int a=111; //这个分配在哪里???
System.out.println("a="+a);
}
}
解决方案 »
- ConcurrentHashMap和ConcurrentSkipListMap类如何做线程安全循环
- Java sdk 下两个bin目录的关系
- 运行Metisse Form程序
- 高手快来帮帮我啊!!!这个异常太烦人了!
- JComboBox无法动态改变
- 急求java.lang.NoSuchMethodError的解办法
- 一个关于Import的问题,我是新手,请指教! 前10位答对100分,答错20分,请勿灌水 ^_^
- java 基础:什么是Listener?
- 一道面试题
- 使用Iterator来遍历Collection集合里的元素,到底能否改变元素的值?
- 高手帮忙看看这段java代码
- 请教swing问题:如何能让table中的表格在内容超出表格宽度时,自动换行,并完全显示出来???
static有专门的区域负责存储,很多人称静态存储区,不过看jvm规范里没有提到静态存储区的概念。
int a = 222; //这个呢??
这个是创建对象的时候在堆里创建的,比如A a=new A();新创建的这个对象中为int a分配了内存,并初始化为222
int a=111; //这个分配在哪里???
这个是在栈里,方法调用的时候分配,方法执行完了就没有了。
在堆里.
在堆里的A.class这个对象创建时的字段.对于Class类来说,它的实例A.class中有一个非静态字段int A.
因为它是Class类的一个实例的字段,所以被该Class类的实例A.class所表示的类的实例共同引用,对于A.class所表示的类的
实例来说它们是静态的.
个人觉得把java程序在内存中的分布了解下还是不错了~~这样有助于你理解程序!一楼的朋友基本给你解释清楚了~~呵呵========================================================这对理解程序有什么用?毫无用处。
真正有用的是在受限环境中,比如手机、单片机等设备上,其堆的大小和栈的大小是不同的,有的设备堆比较大,而栈很小(只有几K),所以需要合理把内存分配到堆或者栈上,避免内存溢出。
给定的环境,如果不知道程序运行时对当前系统资源的占用,最多只能算一个fans.永远成不了程序员.
除了嵌入式应用,J2EE应用难道物理资源就是无限的?
请注意一下文明用语。
在java里堆和栈的调用,与当前系统资源的占用是一回事吗?谁不知道要节省内存?写J2EE的时候,谁会去管这个内存在放在堆里还只栈里?
另外,我怎么觉得这个是fans才关心的问题!