A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 齐浩 中级黑马   /  2015-3-21 22:55  /  1825 人查看  /  17 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

今天去面试,遇上一道题没想出来,大家看一下怎么优化,说一下为什么
题:
for (int i = 0; i < 1000; I++){
     Object obj = new Object();
}
我也没看懂它到底想优化什么

评分

参与人数 1技术分 +1 收起 理由
艺多不压身丶 + 1 赞一个!

查看全部评分

17 个回复

倒序浏览
是不是说 for 语句中初始化变量只在for语句中有效,for 语句结束该变量也消失,可节省内存??  
回复 使用道具 举报
  1. Object obj=null;
  2. for (int i = 0; i < 1000; I++){
  3.     obj = new Object();
  4. }
复制代码


不知道是不是这样,原因是:如果将Object obj 定义在循环里面的话,会在栈内存中循环开辟空间存储引用型变量obj,直到开辟1000个,而放在外面的话,只需要开辟一个就行,只需要将新创建的对象地址值赋给obj即可。这样就大大节省了内存空间。

评分

参与人数 1技术分 +1 收起 理由
艺多不压身丶 + 1 赞一个!

查看全部评分

回复 使用道具 举报
应该是楼上说的意思吧!!
回复 使用道具 举报
好模糊的感觉
回复 使用道具 举报
关山明月 发表于 2015-3-21 23:19
不知道是不是这样,原因是:如果将Object obj 定义在循环里面的话,会在栈内存中循环开辟空间存储引用型 ...

确实是这样,我面试的时候就没想到这一点,,,高手
回复 使用道具 举报
3楼说的很详细
回复 使用道具 举报
只能是3楼说的情况了,其他没什么好优化的,就是不知道建立这么多对象干什么用
回复 使用道具 举报
三楼正解
回复 使用道具 举报
关山明月 发表于 2015-3-21 23:19
不知道是不是这样,原因是:如果将Object obj 定义在循环里面的话,会在栈内存中循环开辟空间存储引用型 ...

三楼说的对
回复 使用道具 举报
wenke 中级黑马 2015-3-22 09:09:46
11#
搞的什么面试题  只有一个变量引用  循环1000次 有999个无引用的对象  都需要垃圾回收   这什么面试题
回复 使用道具 举报
顶三楼,学习一下
回复 使用道具 举报
みぎ 来自手机 中级黑马 2015-3-22 09:37:01
13#
三楼正解。
回复 使用道具 举报
tu3 中级黑马 2015-3-22 09:44:05
14#
11楼说得对,建这么多对象有什么用啊?
这是单单用来面试的吗,还是说有什么实际应用?
回复 使用道具 举报
控制表达式的变量怎么是大写的?
回复 使用道具 举报
学习了            
回复 使用道具 举报
应该是三楼的意思,但是感觉这种题出的毫无意义啊,前999个对象就是为了被回收准备的?
回复 使用道具 举报
学习了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马