一、==
==的话就是比较两个基本类型的数值是否相同
==两边如果是对象的话就是,判断两边的对象是否指向同一内存区域
二、.equals
比较两个对象是否相同,在Object类里面的源码部分
public boolean equals(Object obj) {return (this == obj);}
它的作用也是
判断两个对象是否相等
,般有两种使用情况:
情况
1:
类没有覆盖
equals()
方法。则通过
equals()
比较该类的两个对象时,等价于通过
“==”
比较这
两个对象。
情况
2:
类覆盖了
equals()
方法。一般,我们都覆盖
equals()
方法来两个对象的内容相等;若它们的
内容相等,则返回
true(
即,认为这两个对象相等
)
。
自反性:对于任意不为null
的引用值
x
,
x.equals(x)
一定是
true
。
对称性:对于任意不为null
的引用值
x
和
y
,当且仅当
x.equals(y)
是
true
时,
y.equals(x)
也是
true
。
传递性:对于任意不为null
的引用值
x
、
y
和
z
,如果
x.equals(y)
是
true
,同时
y.equals(z)
是
true
,那么x.equals(z)
一定是
true
。
一致性:对于任意不为null
的引用值
x
和
y
,如果用于
equals
比较的对象信息没有被修改的话,多次调用时x.equals(y)
要么一致地返回
true
要么一致地返回
false
。
对于任意不为
null
的引用值
x
,
x.equals(null)
返回
false
。