<small id='kt3qji'></small> <noframes id='nCJcUxOXMm'>

  • <tfoot id='AgUil'></tfoot>

      <legend id='x3MbWPiZR'><style id='4lQbU8'><dir id='kl3sKN'><q id='J1iboUH7FP'></q></dir></style></legend>
      <i id='XarLgmND'><tr id='3tE2psOuiq'><dt id='XCdERujVD0'><q id='oZGfU3T'><span id='W5dQmGn'><b id='lPEi'><form id='SH0uB4'><ins id='Dg0QSR'></ins><ul id='AJwV'></ul><sub id='6RXfs'></sub></form><legend id='gYFDkJmsSd'></legend><bdo id='nWCgc18P'><pre id='JIrjQEMRs'><center id='kEjJPfaZ'></center></pre></bdo></b><th id='AWNTM'></th></span></q></dt></tr></i><div id='TZpvry1'><tfoot id='YUdMV'></tfoot><dl id='BGOSyn'><fieldset id='pRBy'></fieldset></dl></div>

          <bdo id='Hjtp'></bdo><ul id='W1VP6adZh'></ul>

          1. <li id='s1IuCf'></li>
            登陆

            Java开发人员最常犯的9个过错

            admin 2019-05-15 252人围观 ,发现0个评论

            摘要

            这是我觉得java中比较常见的问题。假如您不同意任一部分,请留下您的谈论。假如您能提出其它一些常见的过错,我将会十分感激。

            1

            Array转ArrayList

            当需求把Array转成ArrayList的时分,开发人员常常这样做:

            Arrays.asList会回来一个ArrayList,可是要特别注意,这个ArrayList是Arrays类的静态内部类,并不是java.util.ArrayList类。java.util.Arrays.ArrayList类完成了set,get,contains办法,可是并没有完成添加元素的办法(现实上是能够调用add办法,可是没Java开发人员最常犯的9个过错有详细完成,只是抛出UnsupportedOperationException反常),因而它的巨细也是固定不变的。为了创立一个真实的java.util.ArrayList,你应该这样做:

            ArrayList的结构办法能够接纳一个Collection类型。

            而java.util.Arrays.ArrayList现已完成了该接口。

            2

            判别一个数组是否包括某个值

            开发人员常常这样做:

            以上代码能够正常作业,可是没有必要将其转换成set调集,将一个List转成Set需求额定的时刻,其实咱们能够简略的运用如下办法即可:

            或许

            榜首种办法可读性更强。

            3

            在循环内部删去List中的Java开发人员最常犯的9个过错一个元素

            考虑如下代码,在迭代期间删去元素:

            成果打印:[b, d]

            在上面这个办法中有一系列的问题,当一个元素被删去的时分,list巨细减小,然后原先索引指向了其它元素。所以假如你想在循环里经过索引来删去多个元素,将不会正确作业。

            你或许知道运用迭代器是在循环里删去元素的正确办法,或许你也知道foreach循环跟迭代器很相似,但现实状况却不是这样,如下代码:

            将抛出ConcurrentModificationException反常。

            可是接下来的代码却是OK的:

            next办法需求在remove办法之前被调用,在foreach循环里,编译器会在删去元素操作后调用next办法,这导致了ConcurrentModificationException反常。

            4

            HashTable与HashMap

            从算法的视点来讲,HashTable是一种数据结构称号。可是在Java中,这种数据结构叫做HashMap。HashTable与HashMap的一个首要的差异是HashTable是同步的,所以,一般来说,你会运用HashMap,而不是Hashtable。

            5

            运用调集原始类型(raw type)

            在Java中,原始类型(raw type)和无界通配符类型很简略让人混杂。举个Set的比如,Set是原始类型,而Set

            请看如下代码,add办法运用了一个原始Java开发人员最常犯的9个过错类型的List作为入参:

            运转以上代码将会抛出反常:

            Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String at ...

            运用原始类型调集十分风险,由于它跳过了泛型类型查看,是不安全的。别的,Set, Set这三个有很大的不同。

            6

            拜访等级

            开发人员常常运用public润饰类字段,尽管这很简略让他人直接经过引证获取该字段的值,但这是一个欠好的规划。依据经历,应该尽可能的下降成员特点的拜访等级。

            7

            ArrayList和LinkedList

            为什么开发人员常常运用ArrayList和LinkedList,却不知道他们之间的差异,由于它们看起来很像。可是它们之间有着巨大的功能差异。简略的说,假如有许多的添加删去操作而且没有许多的随机拜访元素的操作,应该首选LinkedList。不然反之。

            8

            可变与不可变

            不可变目标有许多长处,如简略、安全等。可是关于每个不同的值都需求一个独自的目标,太多的目标会引起许多废物收回,因而在挑选可变与不可变的时分,需求有一个平衡。

            一般,可变目标用于防止发生许多的中心目标,一个经典的比如是许多字符串的拼接。假如你运用一个不可变目标,将会立刻发生许多契合废物收回规范的目标,这浪费了CPU许多的时刻和精力。运用可变目标是正确的解决方案(StringBuilder);

            别的,在有些其它状况下类组词也是需求运用可变目标。例如往一个办法传入一个可变目标,然后搜集多种成果,而不需求写太多的语法。另一个比如是排序和过滤:当然,你能够写一个办法来接纳原始的调集,而且回来一个排好序的调集,可是那样关于大的调集就太浪费了。

            9

            父类和子类的结构办法

            之所以呈现这个编译过错,是由于父类的默许结构办法未界说。在Java中,假如一个类没有界说结构办法,编译器会默许刺进一个无参数的结构办法;可是假如一个结构办法在父类中已界说,在这种状况,编译器是不会主动刺进一个默许的无参结构办法,这正是以上demo的状况;

            关于子类来说,不管是无参结构办法仍是有参结构办法,都会默许调用父类的无参结构办法;当编译器测验在子类中往这两个结构办法刺进super办法时,由于父类没有一个默许的无参结构办法,所以编译器报错;

            要修正这个过错,很简略:

            1、在父类手动界说一个无参结构办法:

            2、移除父类中自界说的结构办法

            3、在子类中自己写上父类结构办法的调用;如super(value);

            译文链接:

            http://www.programcreek.com/2014/05/top-10-mistakes-java-developers-make/

            来都来了,走啥走,留个言呗~

            IT大咖说 | 关于版权

            由“IT大咖说(ID:itdakashuo)”原创的文章,转载时请注明作者、出处及微信大众号。投稿、约稿、转载请加微信:ITDKS10(补白:投稿),茉莉小姐姐会及时与您联络!

            感谢您对IT大咖说的热心支撑!

            相关引荐


            引荐文章

            • 阿里靠什么支撑 EB 级计算力?

            • 技能能够不巅峰,可是配备必定要好

            • 黑客应该从小抓起


            最近活动

            • 2050@2019 让芳华再扬帆,在杭州再聚会

            点击【阅览原文】更多IT技能圈干货等你发掘

            阅览原文

            请关注微信公众号
            微信二维码
            不容错过
            Powered By Z-BlogPHP