==、===、eql?以及equal?的区别

  • ==判断双方的值(value)是否相等
1 == 1.0 # true
  • ===通常情况与==相等,但在一些其它的情况下,也可以判断相等,比如:
    在Range中===用于判断等号右边的对象是否包含于等号左边的Range;
    正则表达式中用于判断一个字符串是否匹配模式,
    Class定义===来判断一个对象是否为类的实例。
(1..10) === 5 # true: 5属于range 1..10
/\d+/ === "123" # true: 字符串匹配这个模式
String === "s" # true: "s" 是一个字符串类的实例
  • eql?判断同时双方的值(value)和类型(type)是否相等
1.eql?(1.0) # false
  • equal?判断对象的identity是否相等,可以认为是否为同一个对象
   s1 = "d"
   s2 = "d"    
   s1.eql? s2 #true
   s1.equal? s2 #false    
   s1.object_id #19839780
   s2.object_id # 19839768
   
   s3 = "d"
   s4 = s3    
   s3.eql? s4 #true
   s3.equal? s4 #true    
   s3.object_id # 19839576
   s4.object_id # 19839576
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,364评论 0 33
  • java笔记第一天 == 和 equals ==比较的比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量...
    jmychou阅读 5,476评论 0 3
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,783评论 18 399
  • 动态规划(Dynamic Programming) 本文包括: 动态规划定义 状态转移方程 动态规划算法步骤 最长...
    廖少少阅读 8,903评论 0 18
  • 儿子出生了以后,发现自己变化很大。吃饭狼吞虎咽,拒绝朋友聚会,商场里购物如同打战,稍微晚点回家就无比内疚。 ◆◇ ...
    勿忘初心丨阅读 3,294评论 0 0

友情链接更多精彩内容