`
wangjian5748
  • 浏览: 205266 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

讨论equals方法的使用

F# 
阅读更多
  1. 示例代码
    第一种(错误):
    TestEquals{  public Long static DEFALUT_INVARIABLE = new Long(1);   public f(){    Long result = otherMethod(...);    if(DEFALUT_INVARIABLE.equals(result)){      ...    }  }}

    第二种(正确):

    TestEquals{  public Long static DEFALUT_INVARIABLE = new Long(1);   public f(){    Long result = otherMethod(...);    if(result.equals(DEFALUT_INVARIABLE)){      ...    }  }}
  2. 讨论:
    这里的代码是想判断一个结果值是否是预期的结果,应该把被比较的值放在前面,期望值放在后面.相当于一个主动方,一个是被动方,为什么呢?理由如下.
  3. 观点:
    1. 这样更符合思维逻辑:我是想检测result是否等于DEFALUT_INVARIABLE; 而不是DEFALUT_INVARIABLE是否等于result.虽然结果一样,但这涉及到一个逻辑思维的转换.在比较复杂的if语句中,这种思维转换就会很麻烦,也只有在这种时候,才会体现出这种讲究的好处.
    2. 对于临界值null,多了一次检测的好处,若result是null,则在第一种编码中是不会报错,结果永远是false,而在第二种编码下,程序就会抛出NullPointerException. null在很多时候都是需要特殊对待的
  4. 反例:
    对于两个值都是从方法获得临时变量,就没办法上述实现观点二.但是,无论如何,在大多数情况下,都会涉及到观点一.
  5. 注意:对于方法的返回值,在正常情况下返回null值的做法,是件值得商榷的事情,需要返回null的情况是少之又少,这里就不讨论


分享到:
评论

相关推荐

    Java中hashCode和equals方法的正确使用

    在这篇文章中,我将告诉大家我对hashCode和equals方法的理解。我将讨论他们的默认实现,以及如何正确的重写他们。我也将使用Apache Commons提供的工具包做一个实现。  hashCode()和equals()定义在Object类中,这...

    C#基础:Equals()与运算符==的区别分析

    equals()方法比较的是两个对象的内容是否一致.equals也就是比较引用类型是否是对同一个对象的引用。对于值类型的比较,这里就不做描述了,下面讨论引用类型的比较:首先我们看一段程序 代码如下:using System;...

    “ ==”和.Equals()有什么区别?

    在本文中,我们将讨论“ ==”与“ .Equals in C#”之间的区别。

    Java的六大问题你都懂了吗

    如果你需要使用equals方法,或者使用任何基于散列码的集合(HashSet,HashMap,HashTable),请察看一下java doc以确认这个类的equals逻辑是如何实现的。[ nextpage]  四、final关键字到底修饰了什么?  final使得被...

    java初学者必看

    8.4.2 定义equals方法 8.5 关于设计好继承的几点建议 8.6 实例:一卡通类的继承 8.6.1 构造方法 8.6.2 setter方法 8.6.3 getter方法 8.6.4 方法覆盖 8.6.5 equals方法 8.6.6 其他需要强调的地方 8.7 本章...

    Java面试题-基础和集合.docx

    其中,讨论了Java为什么不支持多继承、==和equals的区别、方法重载的条件、String为何设计成不可变、包装类的应用场景、Integer的高速缓存机制等多个方面。 通过面试题的逐一解答,读者可以了解到Java语言的一些...

    java深入解析

    103 话题18 一成不变——不可修改的String对象 107 话题19 钩深索隐——String字符最大长度的探索 111 话题20 追本溯源——追寻String字面常量的“极限” 116 话题21 旧调重弹——再论equals方法与“==”的 区别 ...

    JSP网站开发典型模块与实例精讲

     2.3.3 指点迷津——“=”与equals的区别  2.3.4 脚下留心——不安全的用户名密码验证  2.3.5 实现用户登录次数更新  2.4 用Session保存登录信息  2.4.1 保存登录信息到Session  2.4.2 判断用户是否已...

    C#API中的模型和它们的接口设计

    5.不要覆盖模型的Equals和GetHashCode方法。 在传统的MVC、MVP、MVVM、WebMVC这些UI模式中,模型是一个公共元素。虽然有很多文章讨论这些架构中的视图和控制器,但几乎无一涉及模型。在本文中,我们将讨论模型本身...

    C# API中模型与它们的接口设计详解

    不要覆盖模型的Equals和GetHashCode方法。 在传统的MVC、MVP、MVVM、Web MVC这些UI模式中,模型是一个公共元素。虽然有很多文章讨论这些架构中的视图和控制器,但几乎无一涉及模型。在本文中,我们将讨论模型本身...

    socket编程集萃

     还有一种方法是使用 DataInputStream isFromClient = new DataInputStream(client.getInputStream()); DataOutputStream osToClient = new DataOutputStream(client.getOutputStream());  关于这两种输入输出流...

    sesvc.exe 阿萨德

    本篇主要想讨论 ConcurrentHashMap 这样一个并发容器,在正式开始之前我觉得有必要谈谈 HashMap,没有它就不会有后面的 ConcurrentHashMap。 HashMap 众所周知 HashMap 底层是基于 数组 + 链表 组成的,不过在 jdk...

    java面试题,180多页,绝对良心制作,欢迎点评,涵盖各种知识点,排版优美,阅读舒心

    数据类型自动提升(注意以下讨论的是二元操作符) 16 【基础】switch支持的类型 17 【基础】当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是...

    值类型和引用类型的区别

    • 所有值类型都继承自System.ValueType,但是ValueType没有附加System.Object包含之外其它任何方法,不过它倒是改写了Equals和GetHashCode两个方法。引用类型变量的Equals比较的是二者的引用地址而不是内部的值,值...

    leetcode18java-mini_algorithm:算法问题的一些实现

    Three_number_sum_equals_0.py 在数组中找到 a+b+c = 0 的唯一三元组 subarray_max.py 找到具有最大和的连续子数组(至少包含一个数字) 5/13 做我的游戏项目:CityFromNaught 5/14 多数元素.py roman_to_integer.py...

    PHP基础教程 是一个比较有价值的PHP新手教程!

    以下是可以使用的方法: <script language="php"> . . . 语句 与Perl和C一样,在PHP中用(;)来分隔语句。那些从HTML中分离出来的标志也表示语句的结束。 注释 PHP支持C,C++和Unix风格的注释方式: /* C,...

    HGE_系列教材(1-9)

    和释放来提高效率的方法) <5> GUI:强大而灵活的GUI 管理,支持动画式的GUI <6> 矢量(Vectors),对于2D 矢量的完全支持 3)Authoring Tools 层 <1> 资源的打包(pack):HGE 使用ZIP 格式的资源包,你可以使用...

Global site tag (gtag.js) - Google Analytics