gpt4 book ai didi

java - 增强的 for 循环与手动处理对象

转载 作者:行者123 更新时间:2023-11-29 05:25:50 25 4
gpt4 key购买 nike

在某些情况下,为了方便我们使用循环,但也可以“手动”执行一些操作,例如从我的应用程序处理 MenuItem:

  1. 我创建了一些 MenuItem 数组,然后使用增强的 for 循环遍历它。

    MenuItem[] fileActionsToLock ={ mMenu.findItem(R.id.action_share),
    mMenu.findItem(R.id.action_rename),
    mMenu.findItem(R.id.action_copy),
    mMenu.findItem(R.id.action_move) };
    for (MenuItem i : fileActionsToLock) {
    i.setEnabled(false);
    i.getIcon().setAlpha(100);
    }
  2. 我将值分别应用到每个 MenuItem

    mMenu.findItem(R.id.action_share).setEnabled(false);
    mMenu.findItem(R.id.action_share).getIcon().setAlpha(100);
    mMenu.findItem(R.id.action_rename).setEnabled(false);
    mMenu.findItem(R.id.action_rename).getIcon().setAlpha(100);
    mMenu.findItem(R.id.action_copy).setEnabled(false);
    mMenu.findItem(R.id.action_copy).getIcon().setAlpha(100);
    mMenu.findItem(R.id.action_move).setEnabled(false);
    mMenu.findItem(R.id.action_move).getIcon().setAlpha(100);

由于只有少数元素,所以视觉上的表现是一样的。

  • 但是哪个代码运行得更快,为什么?
  • 此外,fileActionsToLock 数组和临时 MenuItem i 将在哪个时间点被垃圾回收?

最佳答案

(1) 我认为任何一个都不会比另一个运行得明显快。循环将有更多的开销(例如,请参阅下面关于需要迭代器的评论)但应该花费大约相同的时间来完成,就好像您只是单独写出所有步骤一样。底线 - 你不会注意到差异。我会使用循环,因为它可能使您的代码更易于阅读。

(2) 什么时候垃圾收集很难说。通常,当没有更多引用指向一个对象时,该对象将符合垃圾回收条件。实际发生的方式和时间取决于您的其余代码和您的个人设备的 JVM 正在运行的垃圾收集。不同版本的 android 操作系统有不同种类的垃圾收集器。 Some more about garbage collectors可以在这里找到also here

关于java - 增强的 for 循环与手动处理对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22732933/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com