Java程序员常犯的几大错误

1.ArrayList与LinkedList

当开发人员不知道之间的区别ArrayList和LinkedList他们经常使用ArrayList,因为它看起来很熟悉。但是,它们之间存在巨大的性能差异。LinkedList如果存在大量的添加/删除操作并且没有大量的随机访问操作,则应该首选。

2.可变与不可变

不可变对象具有诸如简单性,安全性等诸多优点。但是,它需要为每个不同的值分别创建一个对象,并且过多的对象可能会导致垃圾收集的高成本。在可变和不可变之间进行选择时应该有一个平衡。

通常,可变对象用于避免产生太多中间对象。一个典型的例子是连接大量的字符串。如果你使用一个不可变的字符串,你会产生很多对象,这些对象可以立即进行垃圾回收。这浪费了时间和精力在CPU上,使用可变对象的正确解决方案(例如StringBuilder)。

3.Super和Sub的构造函数

在Java中,如果一个类没有定义构造函数,编译器默认会为该类插入一个默认的无参构造函数。如果在Super类中定义了一个构造函数,在这种情况下,Super(String s),编译器不会插入默认的无参数构造函数。这是上面超级类的情况。

Sub类的构造函数(带有-argument或no-argument)将调用无参数的Super构造函数。由于编译器试图向Sub类中的2个构造函数中插入super,但Super的默认构造函数未定义,因此编译器会报告错误消息。

要解决这个问题,只需要1)添加一个Super构造函数给Super类

小编是一个有着5年工作经验的java程序员,对于java,自己有做资料的整合,一个完整学习java的路线,学习资料和工具,相信这里有很多学习java的小伙伴,我创立了一个2000人学习扣群,479121291。每晚都有java的直播课程。无论是初级还是进阶的小伙伴小编我都欢迎!

4.使用原始类型的集合

在Java中,原始类型和无界通配符类型很容易混合在一起。以Set为例,Set是原始类型,Set而是无界通配符类型。

考虑使用原始类型List作为参数的以下代码:

这段代码会抛出一个异常,使用原始类型集合是危险的,因为原始类型集合跳过了泛型类型检查并且不安全。

5.检查数组是否包含值

开发人员经常这样做:

代码有效,但不需要先将列表转换为首先设置。将列表转换为集合需要额外的时间。它可以像下面这样简单:Arrays.asList(arr).contains(targetValue);

要么:

6.从循环内的列表中删除元素

下面的代码在迭代过程中删除元素:

它会抛出ConcurrentModificationException。

相反,以下是确定的:

.next必须在之前被调用.remove。在foreach循环中,编译器会.next在删除元素的操作之后调用该函数,从而导致该操作ConcurrentModificationException。你可能想看看ArrayList.iterator的源代码。

好啦今天的学习文章就到这里了喜欢关注一下吧。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. 今天是2070年的某一天,晴朗,H市。 小蕊在闹钟声里面醒来,“叮”的一生,她全键启动了家中的家具的清晨模式...
    风与轻舟阅读 2,256评论 2 5
  • 在开发项目的时候,遇到了一个问题,就是其中一个页面需要强制横屏,而其他页面要强制竖屏,然后返回在回到横屏,总结了一...
    景悟阅读 5,442评论 0 2
  • 昨天朋友问我说,今天周五了,孩子回来吗?我说不回来,眼不见心不烦,孩子和同学相约出去玩了。我这还像个亲妈吗? 孩子...
    ebf5100ec428阅读 1,625评论 0 3
  • 我把图发给朋友,让他看图写诗,以下是他的作品: 弯弓射日破苍穹, 云繁流动自成峰, 古来源泉生不息, 一睹幻境好风光
    禧珍阅读 1,585评论 4 3

友情链接更多精彩内容