当前位置: 首页 > 面试题库 >

循环创建新对象的效率

章晋鹏
2023-03-14
问题内容

我不确定这个问题是否与语言无关,因此我将以Java问题的身份提出。如果你有这样的循环

for (int i = 0; i < 9; i++) {
    Object obj = new Object;
    // fill object
    // do something with data
}

循环的每次迭代都在创建新的内存空间吗?如果是这样,是否要处理旧空间?如果没有,做这样的事情更有效吗

Object obj = new Object;
for (int i = 0; i < 9; i++) {
    // fill object
    // do something with data
}

编辑:更新了代码以更好地说明问题


问题答案:

简短的答案:即使在Java中进行开发时,也不要理会这些事情,即使这些问题中的大多数都是由JVM自己处理的。

垃圾收集器将知道该怎么做,并将根据情况尝试做最好的事情。

另外,您的具体示例对我来说没有多大用处。您可以进一步详细说明吗?



 类似资料:
  • 我对编程有点陌生,我被卡住了。假设我在一个项目中有五个不同的类:foo1、foo2、foo3、foo4和foo5,它们都做不同但相似的事情。现在假设我需要为每个对象创建一个新对象,比如:foo1 bar1=new foo1();foo2 bar2=新的foo2();foo3 bar3=新的foo3();等等当然这是可行的,但如果我能在一个for循环中实例化我需要的所有对象,或者至少把我想要创建的所

  • 我试图将对象(JavaBean)添加到列表中。 这只会创建一个(类型)的对象,因此它会使用相同的数据将相同的对象添加9次。 这将创建多个对象,添加9个具有diff值的diff对象。 如果(对于循环)每次发出请求时都创建数百个对象而不是9个?所以它在内存中转储,对吗? 如何避免这种情况? 提前谢谢。

  • 在循环函数中,例如的,如果我以这种方式创建对象: 在每一帧调用时,是否会重新创建此对象,或者是否会缓存它,直到它所依赖的内容(例如屏幕大小)发生更改?

  • 我一直在使用JavaScript代码进行自动GUI测试。我一直在进行全面的测试,并优化了一些代码。例如,我有一个函数可以将值输入到窗口的所有字段中,该窗口大致如下所示: 最初输入函数看起来是这样的:这是相当笨拙的,占用了很多空间,不如编辑函数以接受一个将字段作为属性值的对象那样整洁。现在函数看起来像这样:其中是这样定义的: 在我进入测试一个特殊需求的部分之前,这一直工作得很好,该需求说明当您在窗口

  • 我有一组常量值,可以作为列表使用。使用这些值,我必须创建一个键值对对象,并且必须将该对象添加到列表中。我想在JAVA 8中使用流API来实现这一点。下面是使用for循环的示例实现 这可以使用流减少操作来实现吗?

  • 问题内容: 我试图将对象(JavaBean)添加到列表中。 这只会创建一个(类型)对象,因此它会向同一对象添加9次相同数据。 这将创建多个对象,并使用diff值添加9个diff对象。 如果(for循环)每次创建一个请求时都创建数百个对象而不是9个,该怎么办?那么它在内存中的转储对吗? 如何避免这种情况? 提前致谢。 问题答案: 当你这样做 该行将 对象添加到列表中,无论其状态是否更改或它是同一对象