首页 >单机资讯

Java程序员常犯的几大错误

2019-11-09 06:40:12 | 来源: 单机资讯

1.ArrayList与LinkedList

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

2.可变与不可变

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

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

Java程序员常犯的几大错误

Java程序员常犯的几大错误

3.Super和Sub的构造函数

Java程序员常犯的几大错误

如果有对java感兴趣java程序员,可来我们的java技术学习群哟,49405

6009里面免费送java视频教程!

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

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

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

4.使用原始类型的集合

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

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

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

5.检查数组是不是包含值

开发人员经常这样做:

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

要末:

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

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

这种方法存在严重的问题。当一个元素被删除时,列表的大小会缩小,并且索引也会改变。所以,如果你想通过使用索引删除循环内的多个元素,那将无法正常工作。

您可能知道使用迭代器是删除循环内部元素的正确方法,并且您知道Java中的foreach循环像迭代器一样工作,但事实上并非如此。考虑下面的代码:

如果有对java感兴趣java程序员,可来我们的java技术学习群哟,49405

6009里面免费送java视频教程!

它会抛出ConcurrentModificationException。

相反,以下是确定的:

.next()必须在之前被调用.remove()。在foreach循环中,编译器会.next()在删除元素的操作之后调用该函数,从而导致该操作ConcurrentModificationException。

美国伟哥多少钱

印度神油正品订购

broyalviagra

西地那非片的药理

猜你喜欢