当前位置: 首页 > 面试题库 >

在Java中使用.equals方法的正确方法是什么?

丌官翰采
2023-03-14
问题内容

我正在与我的CompSci教授交谈,他建议将所有String .equals方法编写为:

"Hello World".equals(fooString);

而不是:

fooString.equals("Hello World");

这两行都可以编译,但是我想知道第一种方法的好处是什么?我一直都是后一种方式。错了吗 什么是普通/常规?


问题答案:

第一种方法确保执行比较时不会收到 NullPointerException 。当您尝试在不存在的对象上调用方法时,抛出(发生)此异常。

以下是一些相关的切线:仔细阅读风险自负

不过要注意的是,我很少,很少真正看到在合法生产环境中使用的这种技术或编码样式。有两个原因。

首先,在变量包含 null
的情况下,您编写的程序几乎总是想要做一些特殊的或不同的事情。这是因为它通常表示代码功能的其他部分有错误或需要解决的特殊情况。因此,在对对象(在这种情况下为your
进行 任何比较或方法调用 之前 ,应始终进行空检查String fooString

其次,fooString.equals("Hello World")Just往往会使您的代码更具可读性。代码中第一种技术的逻辑意义需要花费几秒钟才能正确处理,并且在浏览数百或数千行代码时,很容易犯下判断错误。实际上,这并不像听起来那么简单,因为在工作世界中,很多时候,很多非常老的程序都会被那些不了解它们的人打补丁,然后瞥了一眼解决问题。代码的可读性极大地提高了公司执行快速分类和解决长期问题的能力。



 类似资料:
  • 这就是我目前拥有所有实体类的方式(此处仅显示一个以供参考) 来自lombok参考: @Data注释可能是项目Lombok工具集中最常用的注释。它结合了@ToString、@EqualsAndHashCode、@Getter和@Setter的功能。本质上,在类上使用@数据与使用默认的@ToString和@EqualsAndHashCode注释该类以及使用@Getter和@Setter注释每个字段是一

  • 问题内容: 我正在尝试使用一个使用大量jQuery的Layout / Template的项目。 我已经学会了将模板与ReactJS Project集成在一起,但是,我正在寻找一种可以完全替代jQuery的解决方案。 我的解决方案之一是在内部使用jQuery函数或React函数。 这种方法正确吗?这是正确的方法吗? 我在下面附上一个小例子: 这是我的职能。 问题答案: 这种方法正确吗?这是正确的方法

  • 问题内容: 即使在使用Java Swing一年以上之后,对我来说,它仍然像魔术一样。如何正确使用BufferStrategy,尤其是方法? 我想添加一个JFrame和一个Canvas,然后进行绘制。我还希望能够调整()画布的大小。每次我调整Canvas的大小时,似乎都会被浪费掉,或者变得毫无用处,因为在上使用并没有真正做任何事情。另外,它具有怪异的不确定性行为,我不知道如何正确同步它。 这就是我的

  • 问题内容: 我想在Linux上使用该机制。我希望我的应用程序知道何时更改了文件。能否请您提供给我一个示例,该怎么做? 问题答案: 文档(来自具有inotify的Monitor文件系统活动) 在C API 提供了三个系统调用来构建各种文件系统监视器: 在内核中创建子系统的实例,并在成功和失败时返回文件描述符。与其他系统调用一样,如果失败,请检查诊断。 顾名思义,它增加了一块 手表 。每个监视都必须提

  • 问题内容: 需要帮助,以了解如何在UIKit中使用prepareForReuse()。该文件说 您只应重置与内容无关的单元格属性,例如Alpha,编辑和选择状态 但是如何重置单个属性属性(例如isHidden)呢? 假设我的单元格有2个标签,我应该在哪里重置: 标签文本 label.numberOfLines label.isHidden 我的tableView(_:cellForRowAt :)

  • 一段时间以来,我一直试图将我的tableview工作作为一种电子表格,通过背景线程进行更新,当单元格更新时,它会亮起几秒钟(更改样式),然后返回到原始样式。我已经知道,我不能直接在表格单元格中存储和设置样式,我需要某种支持类来保存这些数据。但是tableview“重用”单元格(使用相同的单元格处理不同的数据)的行为真的很奇怪。当所有单元格都适合屏幕时,它对我来说完美无瑕,但一旦我放置大约100个单