java 中equals与 ==的区别

来源:互联网 发布:手机安全中心软件 编辑:程序博客网 时间:2024/06/15 17:04
 String  是引用类型的, 所以比较比较两个string类型的数据 必须要使用equals 而不用==
 equals 只能比较引用类型(及对象), 默认情况下比较的是地址的值, 可以根据实际情况比较复写该方法,比较成员变量值是否相同。
  ==   对于基本数据类型比较的值是否相等。  但是对于引用类型比较的是地址


2)两个Long类型为什么不能直接用  == 比较

这要说到==和 equals 的区别了。
1. ==比较的是两个对象在内存中的地址值(栈中的内容)。
2.equals 是 java.lang.Object 类的一个方法。equals 比较的是两个对象的内容(堆中的内容)。java 中所有的类都默认继承于 Object,所以所有的类都有这个方法。
但是 Long 是一个对象,是对 long 的封装。我们看一下 Long 对象的源码,里面的 equals 方法是这么写的:
1     public boolean equals(Object obj) {2         if (obj instanceof Long) {3             return value == ((Long)obj).longValue();4         }5         return false;6     }

所以两个 Long 类型的变量进行比较的话,要么用 equals,要么先调用longValue 方法,拿到里面的 long 值之后再进行==比较。

因此: 两个Long类型要是相等比较的话, 有两种方法:
  a)用equal()方法
  b)将Long类型通过long.value(), 转成long, 然后通过== 作为比较
  c)也可以通过Long类的intValue()方法将两个Long类型转成int, 然后再进行比较
      例如:
dto.getFileType().intValue() == ReconFileTypeEnum.BANK_FILE.getCode().intValue()







0 0
原创粉丝点击