【问题标题】:In java, what's the difference between 'for(int i=0; i<array.length; i++) {array[i] = <null or 0>}' and 'array = new <datatype>[array.length]'?在 java 中,'for(int i=0; i<array.length; i++) {array[i] = <null or 0>}' 和 'array = new <datatype>[array.length]' 有什么区别?
【发布时间】:2019-08-31 13:35:08
【问题描述】:

在我的代码中有一个实例,我必须在下一次迭代之前不断地将 int 数组的值重置为 0。目前我只是这样做:

array = new int[array.length];

这是一件好事还是我应该使用循环来代替?没有副作用似乎是一个非常方便的捷径。

【问题讨论】:

  • 一个重用现有数组,而另一个创建一个新数组。创建新数组可能会给 GC 带来更大的压力,但它可能不会产生重大影响:短暂的对象创建和 GC 是非常现实的。但是,如果您更喜欢第二个,请使用docs.oracle.com/javase/8/docs/api/java/util/…
  • @JB Nizet - 同意,但让我们提一下 fill 仍在使用循环内部
  • hmm 老实说,我什至无法想到一个用例,其中我有一个需要频繁重置的数组
  • 肯定有(可能)副作用 - 如果数组在其他地方使用,你最终会得到不相交的数组(创建一个新数组) - 如果是这样的话好与不好,甚至需要,取决于用例
  • 我喜欢这个问题的重点,所以我投了赞成票。我不确定它为什么会收集反对票。

标签: java arrays loops


【解决方案1】:

没有副作用似乎是一个非常方便的捷径......

每次创建新数组不是副作用吗?即使使用原语,如果您需要多次执行此操作,它也会显着影响应用程序的性能

你应该改用循环

【讨论】:

    猜你喜欢
    • 2011-07-27
    • 2023-03-29
    • 2019-06-25
    • 2017-10-16
    • 2012-05-26
    • 1970-01-01
    • 1970-01-01
    • 2015-12-21
    • 2017-10-23
    相关资源
    最近更新 更多