equals跟==的区别

1、 = =是一个判断相等的运算符。如果这个运算符的两边如果是基本数据类型,则它判断的是基本数据类型的值是否相等。
比如:
int i=3;
int j=3;
System.out.println(i==j); //输出的为true

2、= =运算符的两边如果是某个类类型的对象,则它判断的是两个对象是否是同一个地址。如果地址相同,那么内容就一定相同。如果地址不相同,内容就不一定相同。
比如
Student stu1=new Student(“zhangsan”,20,“S001”);
Student stu2=new Student(“zhangsan”,20,“S001”);
Student stu3=new Student(“wangwu”,21,“S002”);
System.out.println(stu1= =stu2); //输出的为false
System.out.println(stu1= =stu3); //输出的为false

3、equals方法不能判断基本数据类型的数据,只能判断对象是否相等。如果没有重写equals方法,那么equals方法判断的是地址,因为这个equals方法是继承自Object的equals方法,Object类中的equals方法判断的是地址。
Object类中的equals方法:
public boolan equals(Object obj){
return (this==obj)
}

4、如果某个类重写了equals方法,那么就看equals方法中实现的判断是什么,一般情况下判断的是equals两端对象的内容。
例如在java的类库中的String,封装类(Integer,Float,Double等等)中的equals判断的就是内容是否相等。
*if(stu1.equals(stu2)){
System.out.println(“相等”);
}else{
System.out.println(“不等”);
}
重写equals方法:
@Override
//stu2传给obj,stu2就变为object类型了.this指的是stu1
public boolean equals(Object obj) {
boolean flag=false;
if(obj= =null){
return flag;
}else if(this= =obj){
//this指的是stu1,地址相同,一定是内容相同
return true;
}else{
/obj不是null 且this跟obj地址不相同
* obj对象是否是Student类类型的对象
if(obj instanceof Student){
//obj不为null 且obj和this都是Student类型的对象
Student stu=(Student)obj;//类型转换
if(this.name.equals(stu.getName()) &&
this.age==stu.age &&
this.stuNo.equals(stu.getStuNo())){
return true;
}
}
}
return flag;
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值