Java基础:for循环内外创建对象的区别,哪个性能更优? | 您所在的位置:网站首页 › break放在if里面与外面的区别 › Java基础:for循环内外创建对象的区别,哪个性能更优? |
我是 ABin-阿斌:写一生代码,创一世佳话,筑一览芳华。 如果小伙伴们觉得文章有点 feel ,那就点个赞再走哦。 声明: 原作者:博客园:挑战者V原文链接:https://www.cnblogs.com/youcong/p/14619034.html 文章目录 一、前言二、代码参考示例三、争议点四、总结 一、前言 最近在项目中看到同事写的代码for循环中,创建对象时喜欢声明成员变量,于是我就查了一下这样写的好处是什么? 二、代码参考示例 for循环内创建对象,就像这样的代码: List driverTracks = driverService.selectDriverTrackByExample(example); List list = new ArrayList(); if (driverTracks != null && driverTracks.size() > 0) { for (DriverTrack driverTrack : driverTracks) { TrackVo trackVo = new TrackVo(); trackVo.setLat(driverTrack.getLatitude()); trackVo.setLng(driverTrack.getLongitude()); list.add(trackVo); } } for循环外创建对象,就像这样的代码: List driverTracks = driverService.selectDriverTrackByExample(example); List list = new ArrayList(); if (driverTracks != null && driverTracks.size() > 0) { TrackVo trackVo = null; for (DriverTrack driverTrack : driverTracks) { trackVo = new TrackVo(); trackVo.setLat(driverTrack.getLatitude()); trackVo.setLng(driverTrack.getLongitude()); list.add(trackVo); } } 三、争议点两者写法的对比存在争议,有如下观点: A认为后者比前者要好(因为这样写只创建了一个对象的引用,也就是在for循环里面去new对象的时候,都只是将这个引用指向不同的对象);B认为随着JDK不断升级迭代,两者效率是一样;C认为JVM早就解决这样的问题,无需担心。我的看法: 我更偏向于for循环体内定义对象,因为我一直的写法也是如此,特别是JDK从过去的1.5到现在,JDK已经有15了,像这样的问题JDK开发者早已经替我们考虑好了(Java不像C++,对内存的把控非常严,因为已经有JVM替我们管理了,我们只需专注于业务)。但是从另外一个角度来看,弄清楚为什么比仅仅停留在使用层面,能让我们对于这项技术有更深入的了解和掌握,深入的了解和掌握能让我们走得更远。最近公司领导就特别建议在循环体外定义对象而非在循环体内定义对象。 四、总结 下面这些文章对这两种写法做了深入的测试说明,记得一定要看哦参考资料如下: 【JAVA】变量声明在循环体内还是循环体外的争论,以及怎样才真正叫『避免在循环体中创建对象』? java中的for循环里面创建对象和for循环外面创建对象之间的区别 for循环中创建对象 |
CopyRight 2018-2019 实验室设备网 版权所有 |