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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wenke 中级黑马   /  2015-3-22 09:13  /  1174 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

for(int i =0;i<1000;i++) {
      Object obj = new Object();
}
面试题要优化这个循环    帖子里有人这么弄的
Object=null;
for(int i =0;i<1000;i++) {
       obj=new Object();
}
搞不懂 只有一个变量引用obj 循环了1000个对象  obj只能引用一个  其他999个全部没指向  全部要被垃圾回收  这面试题要做什么 ?

5 个回复

倒序浏览
每次循环执行的都是Object obj=new Object(),每次虽然都是新建对象,但是新建的对象都是同一个地址,所以可以那样优化
回复 使用道具 举报
zhqw_heima 发表于 2015-3-22 09:16
每次循环执行的都是Object obj=new Object(),每次虽然都是新建对象,但是新建的对象都是同一个地址,所以可 ...

一个地址可以指向1000个对象吗   表示不理解
回复 使用道具 举报
wenke 发表于 2015-3-22 09:19
一个地址可以指向1000个对象吗   表示不理解

新建的时候如果判断该对象已经存在 是不会再新建对象的
回复 使用道具 举报
Object obj = new Object();  前面的obj代表对象的引用  这句话的意思是先创建一个叫obj的对Object对象的引用 然后再new一个新的object 然后将Object的地址传给 obj  所以 如果在循环内部的话就会导致建立了1000次Object的引用
回复 使用道具 举报
还有就是 对于大括号来说 就是一个作用域
出了大括号就没用了
所以 一次循环以后 obj 就已经没有了
这题所优化的应该是不断创建变量的开销吧 至于GC 谁知道这1000个对象什么时候被回收呢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马