int i=1;intj=1;开辟了多大的内存
rt
我觉得总共就在栈中开辟了4个字节的空间,因为栈中数据共享
right?
------解决方案--------------------没有深究不敢乱言
不过你得问法不确切
i和j作为变量本身也是要占用空间的
------解决方案--------------------你又说出了我的第二个疑问,就是到底i,j占不占内存?
你的意思是内存中肯定是不止4个字节,还要给i,j再分配空间。我问过一些人,他们的答案都是i,j不占内存,根本就没有i,j的地方,只有4个字节放1。不理解,高手解释一下
------解决方案--------------------blog 更新:
think in java 各章后练习答案.....
http://blog.csdn.net/heimaoxiaozi/
------解决方案--------------------我是新手 我的理解是
应该是1在堆中开辟了4个字节的空间 而i和j是在栈中创建的引用 指向这个空间
举个例子
就和文件名和文件本身的内容的道理一样 你建个文件 文件名再长 文件里没内容 他的大小也是0
他只不过是一个指向堆空间中的引用.
------解决方案--------------------2
------解决方案--------------------int i = 1; int j = 1; 本身“1”会在常量池中占4个字节(int型32bit)。
i和j
如果是类的成员变量,那么在类被创建的时候存放在本类的runtime constant pool中的field array中,至于空间,我没有研究过,因为在分配空间的时候还要对访问控制进行限制(本例是default)和其他许多相关的设定,与具体的jvm实现有关。
如果是局部变量,则又是另一种内存分配方法。
另外,还要考虑是否是多线程的环境,如果是,那么在每个线程中还会有它们的副本。
上面的说法可能是有问题的:),楼下的接着说吧。
------解决方案--------------------学习一下
-----------------------
http://blog.xerik.cn (专注于Java技术)