String a=null 与String a="a" 是否占用的内存空间大小一样? String a=null 与String a="a" 是否占用的内存空间大小一样? 它们是被放在栈里还是堆里? 我看到很多程序员在循环里面声明变量,例如 while(1){ String name ="a";}由此我联想到这样应该会增加内存的开销吧?请各位指点? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 String a=null 未分配内存String a="a" 分配了内存 null在java中是一个未实例话的对象,没有实例化的对象是不会被分配空间的竹子的马甲呢? 此回复为自动发出,仅用于显示而已,并无任何其他特殊作用楼主【Rush_2008】截止到2008-07-08 11:53:36的历史汇总数据(不包括此帖):发帖的总数量:6 发帖的总分数:45 每贴平均分数:7 回帖的总数量:35 得分贴总数量:9 回帖的得分率:25% 结贴的总数量:6 结贴的总分数:45 无满意结贴数:2 无满意结贴分:30 未结的帖子数:0 未结的总分数:0 结贴的百分比:100.00% 结分的百分比:100.00% 无满意结贴率:33.33 % 无满意结分率:66.67 % 敬礼! String a=null 只是生成了一个引用,他不会占有内存空间与String a="a" 他对引用赋值了,所以他站用了一定的内存空间 但是 注意 "a" 是在栈中存放的。如果现在 String b="a" 那么 String b和string a 是引用的同一块内存空间,也就是说 String b=“a”的时候没有增加新的内存空间当 String b=new String(“a”)的时候 会在堆中给b分配新的内存空间也可以看出在while 中String name =“a”其实是不会增加内存开销的 String a = "a" a在栈中分配内存,a指向 在数据区存放的 "a" 我觉得还是会占内存的String a = null;String b = "b";a 与 b 应该都会占内存吧"b"也是 会占内存的,不过不知道怎么去实验是不是有个内存检测工具?java里面 a=null,也会占用内存吗?还想知道的是,Java中内存是怎么分配的,变量和常量是放在栈里,对象是放在堆里吗? a存放到放到哪里?int b ;b有没有分配空间呢?引用,或者说指针变量,会不会被分配空间呢? String a=null String a="a" 等号左边的2个a都是引用,不存在占不占内存的问题等号右边的null将引用指向空,即不分配内存;而"a"作为匿名String,存在于pool里面,作为公用,要分配内存 a="a"指向常量池,和a=null一样,只在栈分配 应该是的,栈用来存放常量和变量,堆用来存放new创建的对象。 内存的布局是这样的:code segment :存放代码(比如:还没有调用的method等);data segment :存放静态常量和字符串常量;stack :局部变量(比如:8中基本的数据类型,引用);heap : 动态申请的内存(对象)。只要不是new出来的东西就都不在heap中吗?或者说只有new出来的东西才在heap中分配内存? while(1000次){ String a="a";} String a="a";这句话是放在{}之间的,也就是说是局部变量,因此在while执行完后,a变量就逻辑上清除了(等待垃圾收集器来收集他)那在执行while的时候会增加内存的开销吗,也不会,你可以把他想像成如下形式:{ String a="a";}{ String a="a";}{ String a="a";}{ String a="a";}。。。。。循环1000次,每次循环结束后,就把上次的a变量清除了 String a="a"分配在String池里 其实引用也是占有内存空间的,对象的引用是被分配到栈中的,有jvm完成的,引用存放的就是一个地址 借这个地方我也问下 String a,b; a=new xx();是不是建立1个对象和2个引用?还是一个引用?b算不算引用? String a=null;并没有指定引用的内存空间,而且jvm看到null就知道暂时不用分配空间给aa = "a";jvm判断栈内是否存在对应的字符串a ,如果存在,将变量a的引用指向栈内的"a",如果不存在在栈内开辟空间,添加新的字符串"a",然后将变量a的引用指向新开辟的内存空间 一个小题贴出自己的程序,求改进方法 抓取网页中的URL地址 怎样理解equals()方法. java面试全集分享 怎么往表格中添数据?? 想做一个自动投票机玩玩 在jbuilder中怎么样写数据恢复和备份的代码,请指教 本人用JAVA连接MYSQL,但在JAVA里往MYSQL插入中文数据就是乱码? 为什么服务器上的图片内容改变,文件名不变,客户端(applet)怎么刷新都没变化,请高手帮忙解决啊!!! Redhat 7.3下面安装jbuilder7的问题?? 如何将Java获取的图片传递到C程序中使用 在做局域网聊天室,服务器不识别客户端
String a="a" 分配了内存
楼主【Rush_2008】截止到2008-07-08 11:53:36的历史汇总数据(不包括此帖):
发帖的总数量:6 发帖的总分数:45 每贴平均分数:7
回帖的总数量:35 得分贴总数量:9 回帖的得分率:25%
结贴的总数量:6 结贴的总分数:45
无满意结贴数:2 无满意结贴分:30
未结的帖子数:0 未结的总分数:0
结贴的百分比:100.00% 结分的百分比:100.00%
无满意结贴率:33.33 % 无满意结分率:66.67 %
敬礼!
String a=null 只是生成了一个引用,他不会占有内存空间
与String a="a" 他对引用赋值了,所以他站用了一定的内存空间
但是 注意 "a" 是在栈中存放的。如果现在 String b="a" 那么 String b和string a 是引用的同一块内存空间,也就是说 String b=“a”的时候没有增加新的内存空间当 String b=new String(“a”)的时候 会在堆中给b分配新的内存空间也可以看出在while 中String name =“a”其实是不会增加内存开销的
String b = "b";a 与 b 应该都会占内存吧"b"也是 会占内存的,不过不知道怎么去实验是不是有个内存检测工具?java里面
a=null,也会占用内存吗?还想知道的是,Java中内存是怎么分配的,变量和常量是放在栈里,对象是放在堆里吗?
b有没有分配空间呢?引用,或者说指针变量,会不会被分配空间呢?
String a="a" 等号左边的2个a都是引用,不存在占不占内存的问题等号右边的null将引用指向空,即不分配内存;而"a"作为匿名String,存在于pool里面,作为公用,要分配内存
指向常量池,和a=null一样,只在栈分配
应该是的,栈用来存放常量和变量,堆用来存放new创建的对象。
内存的布局是这样的:
code segment :存放代码(比如:还没有调用的method等);
data segment :存放静态常量和字符串常量;
stack :局部变量(比如:8中基本的数据类型,引用);
heap : 动态申请的内存(对象)。只要不是new出来的东西就都不在heap中吗?
或者说只有new出来的东西才在heap中分配内存?
String a="a";
} String a="a";这句话是放在{}之间的,也就是说是局部变量,因此在while执行完后,a变量就逻辑上清除了(等待垃圾收集器来收集他)
那在执行while的时候会增加内存的开销吗,也不会,你可以把他想像成如下形式:{
String a="a";
}
{
String a="a";
}
{
String a="a";
}
{
String a="a";
}
。
。
。
。
。
循环1000次,每次循环结束后,就把上次的a变量清除了
String a="a"分配在String池里
其实引用也是占有内存空间的,对象的引用是被分配到栈中的,有jvm完成的,引用存放的就是一个地址
String a,b;
a=new xx();
是不是建立1个对象和2个引用?还是一个引用?b算不算引用?