=号到底比较的是什么??

先看个程序

package com.test.one;

public class one {

private String name;
private int id;
@Override
public int hashCode()
{
System.out.println("#");
return 1;
}//重写hashcode/.....
public boolean equals(one o)
{
if(o.name.equals(name)&&o.id==id)
{
return true;
}
return true;
}
public static void main(String[]args){
one o1=new one();
one o2=new one();
o1.id=1;
o2.id=2;
o1.name="o1";
o2.name="o2";
System.out.println(o1==o2);
System.out.println(o1.toString());
System.out.println(o1.equals(o2));
}
}

打印

false
#
com.test.one.one@1
true

很多人有自己对 对象直接关于 ==比较的看法
但我在这说自己发现的一些东西
这里的两个对象 但他的方法 equals是永远返回true的
但hashcode也是返回一样的数 也就是说这是hashcode也是相等的
但他们比较后(==)却不相等....
说明==和 hashcode和equals没有关系.....
他其实就是比较的在内存的地址 (String 在常量池中是相等的两个对象 还有-127-128范围内的Integer对象也是相等的)
和其余的都没关系
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值