iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Java中常犯的错误有哪些
  • 942
分享到

Java中常犯的错误有哪些

2023-06-16 12:06:36 942人浏览 泡泡鱼
摘要

本篇内容介绍了“Java中常犯的错误有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. 忽略访问修饰符虽然有点莫名其妙,但候选者真的经

本篇内容介绍了“Java中常犯的错误有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

1. 忽略访问修饰符

虽然有点莫名其妙,但候选者真的经常忘记Java中protected访问修饰符的作用域。也许是因为面试过程中过于焦虑和紧张,他们通常只能答出其一:

  • 可从子类访问protected字段、方法和构造函数。

  • 可从同一包中访问protected字段、方法和构造函数。

此外,包的作用域能帮助许多开发人员编写自己的测试:可以从测试路径访问受保护的方法。所以忘记这个属性等同于在面试中表明自己从来没有编写过测试!

2. 字符串连接

如果使用大量字符串或大型字符串,则可能会在连接过程中浪费大量内存。

Java中常犯的错误有哪些

上述示例是创建一些StringBuilder和String对象:准确来说,是10.000.000个StringBuilder和10.000.001个String。

解释:

先退一步,看看发生了什么。

当使用+运算符进行字符串连接时,将创建一个中间对象,该对象存储连接的结果后,将结果赋值给目标对象。

Java中常犯的错误有哪些

在如上示例中,一共创建了3个对象:2个用于文本,1个用于连接,即第一个字符串result的副本加上第二个字符串“world!”。因为String是不可变的,所以这种字符串连接是可以实现的。

但是编译器是足够智能的,可以将代码转化为以下内容(Java9+不适用,因为它使用StrinGContactFacotry,但结果非常相似):

Java中常犯的错误有哪些

优化删除了中间连接对象,内存被2个字符串文本和1个StringBuilder占用。总体而言,字符串对象的数量从O(n²)下降到O(n)。

回到第一个示例,编译器对代码的优化如下:

Java中常犯的错误有哪些

编译器只是优化了内部连接,但这会创建很多StringBuilder和String对象!连接字符串的正确方法如下,只需一个StringBuilder和一个String。

Java中常犯的错误有哪些

3. 没有使用equals()

如果你正在使用==(比较运算符)而不是调用equals()函数,那么你需要改变这个习惯,结果可能会令人大吃一惊。

Java中常犯的错误有哪些

解释:

当想要比较两个String以及其他任何对象时,不要使用==。==只比较两个操作数的对象引用(内存地址比较)而非内容。

在上面的例子中,字符串不能启动字符串驻留机制:它的内存地址与x不同。

4. 返回null

笔者已经发现了很多次这样的方法:

Java中常犯的错误有哪些

返回null的问题是强行让调用方对结果进行空检查;在这种情况下,如果没有项,调用方就会返回空列表。

开发人员总是希望返回一个异常或特殊对象(如空列表),否则使用代码的应用程序将受到NullPointerException的影响。

5. 密码为字符串

将用户提供的密码存储在字符串对象中是一个安全问题,字符串容易受到内存攻击。

应该使用char[],就如同JPassWordField和Password4j正在做的那样。但如果讨论的是WEB应用程序,大多数Web容器都将httpservletRequest对象中的纯文本密码作为String传递,所以开发人员几乎对此无能为力。

解释:

字符串由Java虚拟机(JVM)(驻留)缓存并存储在PermGen空间(Java8之前)或堆空间中。在这两种情况下,只有在垃圾回收发生后才删除缓存值:这意味着无法得知特定值何时会从字符串池中删除,因为垃圾收集器的行为是不确定的。

另一个问题是,String是不可变的,因此不能清除它们。然而char[]是可变的,并且可以在处理后删除(例如用0替换每个元素)。通过这个简单的技巧,攻击者只能在内存中找到全为零的数组而不是纯文本密码。

6. 传递null

传递null意味着,理所当然地认为调用的代码可以管理null。如果不能,那么应用程序肯定会抛出NullPointerException。

另外,显式传递null会使代码越来越混乱。下面是一个典型实例:

Java中常犯的错误有哪些

调用init()时,没有可用的User对象。那么,如果一个User都没有,为什么要调用一个对User进行操作的函数呢?如果需要grantAccessToUser()中的逻辑,就应该从其他的函数中提取并使用,而非传递null。

7. Heavy methods

以下示例可能会导致系统性能损失:

Java中常犯的错误有哪些

Pattern.compile()是一个资源占用极高的函数,不应在每次检查字符串是否与同一模式匹配时都调用它。

解释:

Pattern.compile() 将模式预编译,以便使用更快的内存表示。与单个匹配相比,此操作需要极强的计算能力。

增加性能的经典方法是在静态字段中缓存Pattern对象,如下所示:

Java中常犯的错误有哪些

每次使用同一个资源占用极高的无状态对象时,都应该使用这个解决方案。

8. 迭代时处理集合

Java中常犯的错误有哪些

这段代码将抛出ConcurrentModificationException。

解释:

在迭代时从列表中删除某个项目,列表迭代器会运行不良,例如跳过元素、重复元素、索引数组末尾等。这就是许多集合更容易抛出oncurrentModificationException的原因。

使用底层数组迭代器:

Java中常犯的错误有哪些

9. 使用“返回码”而不是抛出异常

在某种意义上,开发人员认为异常是不祥的,因此他们倾向于编写返回奇怪值的函数,如-1或“C_ERR”。

Java中常犯的错误有哪些

这是一个值得创建自定义Exception的典型情况。该示例可以改写如下:

Java中常犯的错误有哪些

正如所见,代码的可读性和可维护性大大提高。调用者只需读取DeviceStartException的内容,而不必处理每个返回码。

10. 使用StringBuffer

Java中常犯的错误有哪些

由于StringBuffer的同步特性,此示例会产生大量内存占用。在更复杂的环境中,读取器可能会错认为某些不必要的同步是必要的。

如果项目中包含StringBuffer,可能是因为某些遗留api(即Java5之前)需要它,而很少是因为代码试图在并发环境中追加String。改用StringBuilder:在Java5时引入,其所有操作是不同步的。

这只是笔者在面试和活动项目中看到的部分错误,还没有提到面向对象编程(OOP)的陷阱、设计模式、过度设计、内存泄漏等缺陷

Java中常犯的错误有哪些

如果你有这些问题,那么是时候改变编码风格。这并不难,避免这些陷阱能增强开发人员的经验,并且使人主动为下一次面试做更多的准备。

多使用像SonarQube这样的静态代码分析器,它能指出实际错误,突显潜在错误。

“Java中常犯的错误有哪些”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: Java中常犯的错误有哪些

本文链接: https://www.lsjlt.com/news/283744.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java中常犯的错误有哪些
    本篇内容介绍了“Java中常犯的错误有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. 忽略访问修饰符虽然有点莫名其妙,但候选者真的经...
    99+
    2023-06-16
  • Java新手常犯的错误有哪些
    本篇内容主要讲解“Java新手常犯的错误有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java新手常犯的错误有哪些”吧!Java错误,主要包括两方面,一种是语法错误,另一种是逻辑错误。语法...
    99+
    2023-06-17
  • 写CSS时经常犯的错误有哪些
    这篇文章主要介绍“写CSS时经常犯的错误有哪些”,在日常操作中,相信很多人在写CSS时经常犯的错误有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”写CSS时经常犯的错误有...
    99+
    2024-04-02
  • AngularJS开发者常犯的错误有哪些
    这篇文章主要介绍了AngularJS开发者常犯的错误有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。介绍AngularJS是如今***的...
    99+
    2024-04-02
  • 建设网站常犯错误有哪些
    这篇文章的内容主要围绕建设网站常犯错误有哪些进行讲述,文章内容清晰易懂,条理清晰,非常适合新手学习,值得大家去阅读。感兴趣的朋友可以跟随小编一起阅读吧。希望大家通过这篇文章有所收获!1、导航菜单使用图片、FLASH导航菜单使用图片、FLAS...
    99+
    2023-06-08
  • Java程序最容易犯的错误有哪些呢
    今天就跟大家聊聊有关Java程序最容易犯的错误有哪些呢,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。  1.Duplicated Code  代码重复几乎是最常见的异味了。他也是Re...
    99+
    2023-06-03
  • 网站优化之锚文本常犯的错误有哪些
    这篇文章主要介绍网站优化之锚文本常犯的错误有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、锚文本设置导致关键词的堆砌我们从搜索引擎排名规则中可以知道,一般设置的关键词符合用户的搜索习惯并且其出现的频率越高,在...
    99+
    2023-06-10
  • 在编程时会犯的错误有哪些
    本篇文章为大家展示了在编程时会犯的错误有哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。为了拥有一个看起来不错的存储库,你应该有定期...
    99+
    2024-04-02
  • Java开发中常见错误有哪些
    这篇文章主要讲解了“Java开发中常见错误有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java开发中常见错误有哪些”吧!编译器错误编译器错误消息在J...
    99+
    2024-04-02
  • pandas初学者容易犯的错误有哪些
    这篇文章给大家分享的是有关pandas初学者容易犯的错误有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。使用pandas自带的函数读取大文件第一个错误与实际使用Pandas完成某些任务有关。具体来说我们在实际...
    99+
    2023-06-25
  • Java程序员常犯的错误是什么
    这篇文章主要介绍“Java程序员常犯的错误是什么”,在日常操作中,相信很多人在Java程序员常犯的错误是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java程序员常犯的错误是什么”的疑惑有所帮助!接下来...
    99+
    2023-06-16
  • CSS网页布局及网站开发常犯的错误有哪些
    本文小编为大家详细介绍“CSS网页布局及网站开发常犯的错误有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“CSS网页布局及网站开发常犯的错误有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,...
    99+
    2024-04-02
  • java使用@Transactional时常犯的N种错误
    目录1.在同一个类中调用2. @Transactional修饰方法不是public3. 不同的数据源4. 回滚异常配置不正确5. 数据库引擎不支持事务小结@Transactional...
    99+
    2024-04-02
  • Web开发者易犯的严重错误有哪些
    小编给大家分享一下Web开发者易犯的严重错误有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1.  “重新发明轮子...
    99+
    2024-04-02
  • C#编程中最容易犯的编写错误有哪些
    这篇文章主要讲解了“C#编程中最容易犯的编写错误有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#编程中最容易犯的编写错误有哪些”吧!1、拼接字符串在C#编程中,字符串类型的处理是比较...
    99+
    2023-07-05
  • Python中通常不应该犯的7个错误分别是哪些
    本篇文章为大家展示了Python中通常不应该犯的7个错误分别是哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。 介绍Python是一门相对容易掌握的语言,但是由于假设了很多事情,因此犯错...
    99+
    2023-06-16
  • JavaScript中常见的错误有哪些
    这篇文章主要讲解了“JavaScript中常见的错误有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript中常见的错误有哪些”吧!Java...
    99+
    2024-04-02
  • SQL中有哪些常见的错误
    这篇文章给大家介绍SQL中有哪些常见的错误,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。 1、LIMIT 语句分页查询是最常用的场景之一,但也通常也是最容易出问题的地方。比如...
    99+
    2024-04-02
  • Python中有哪些常见的错误
    本篇文章为大家展示了Python中有哪些常见的错误,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1、忘记在if,for,def,elif,else,class等声明末尾加 :会导致“SyntaxEr...
    99+
    2023-06-16
  • Java编程中的常见算法错误有哪些?
    在Java编程中,算法是一项非常重要的技能。无论是在工作中还是面试中,编写高质量的算法都是必要的。然而,即使是经验丰富的Java程序员,在编写算法时也会犯一些常见的错误。在本文中,我们将讨论一些常见的Java编程中的算法错误,并提供演示代...
    99+
    2023-09-25
    编程算法 laravel 对象
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作