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

哪个最佳?

刘向阳
2023-03-14
问题内容

在循环中声明变量是好的还是在Java中动态声明最佳。在循环中声明时是否还涉及性能成本?

例如。

选项1:循环外

List list = new ArrayList();
int value;

//populate list
for(int i = 0 ; i < list.size(); i++) {
  value = list.get(i);
  System.out.println(“value is ”+ value);
}

选项2:循环内

List list = new ArrayList();

//populate list
for(int i = 0; i < list.size(); i++) {
  int value = list.get(i);
  System.out.println(“value is ”+ value);
}

问题答案:

Robert C. Martin 在CleanCode中建议Java编码人员声明变量,使其尽可能接近使用它们的位置。变量的作用域不应超出必需的范围。使变量的声明靠近使用它的位置有助于提供读者类型和初始化信息。不要对性能太在意,因为JVM非常擅长优化这些东西。而是专注于可读性。

顺便说一句:如果您使用的是Java 5或更高版本,则可以使用以下Java-5新增功能来大幅精简代码示例:

  • foreach构造
  • 仿制药
  • 自动装箱

我将您的示例重构为使用上述新功能。

List<Integer> list = new ArrayList<Integer>();

// populate list

for (int value : list) {
    System.out.println("value is " + value);
}


 类似资料:
  • 修改器和填充函数可以做的事,纯函数也可以做到。实际上有些所谓的函数式编程语言只支持纯函数。一些程序员认为,比起使用修改器来,使用纯函数开发程序更快且更不易出错。但是,有很多时候修改器是很方便的,也有很多情况下函数是程序效率是更低的。 总而言之,我推荐在能使用纯函数的时候尽量编写纯函数,在修改器有无法比拟的优势的情况下,再求助于修改器。此方法可称为函数式编程风格。

  • 问题内容: 哪个最好,换句话说,最容易使用?条纹或JSF。 尽管我并没有因为愤怒而同时使用这两种方法,但是我需要评估在启动新项目和转换现有Struts项目时最好的选择。 我担心JSF的渲染效果不理想,但是其他人会有什么经验呢?似乎条纹要简单得多,在这种假设下我是否正确? 问题答案: 哪个最好,换句话说,哪个最容易使用?条纹或JSF。 哪个最好?好吧,Stripe和JSF是不同的。前者是基于动作的框

  • 问题内容: 我已经成为jQuery新的令人惊叹的Deferred模块的熟练用户,并且随着我逐渐使用更多的Node.js,我发现自己在大部分Node.js编程中都需要与之完全相同的东西:回调会阻塞直到一组promise可以分解为解决方案,随着任务的复杂性的增加,可以自由地动态添加到数组中- 例如,当处理一个数据树时,它的大小在开始时就不知道任务。 但是,它需要一个全新的可执行文件,该接口真是令人困惑

  • 问题内容: 我需要做得好的gui swing java datechooser ..我只从199x中找到一些难看的datepicker 有人知道一个不错的gui datepicker吗? 问题答案: 的SwingLabs有SwingX项目,它提供了一套组件,包括 JXDatePicker (API)与工作时间类,它 支持从日00:00:00 1970年1月1日,GMT开始 。 试试demo,作为一

  • 问题内容: 按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我利用了以下JPA实现: hibernate 顶联 OpenJPA 他们每个人都有自己的优点和缺点。我发现Hibernate是这三个中最先进的,除了它将自己的某

  • 问题内容: 该图非常大,但无向。边缘未加权。 在我的实现中,我必须找到最大度数的顶点,并在顶点和边上都删除。 链表?数组列表?地图? 哪种对我的实施更好? 问题答案: 我的建议是将顶点存储在优先级队列中。这样,您可以非常快速地访问最高度的顶点。至于如何实现顶点,我将每个相邻的顶点存储在某种形式的数据结构中,例如HashSet或TreeSet,以便能够有效地删除内容。我不会明确地表示边缘,这不是必需