== 和 equals 的区别?

==
如果比较的对象是基本数据类型,则比较的是数值是否一致;如果比较的是引用数据类型,则比较的是对象的地址值是否一致。
equals():equals()方法不能用于比较基本数据类型的对象,如果对象和自身进行比较,则equals()方法与是一样的。
对于String类 Date类 File类等 可重写equals() 方法用于比较对象的属性内容是否一致。
举例如果a,b 是基本类型,那么
运算符比较的是什么呢?

    public class Demo { 
    private static int a = 100;
    private static int b = 100;   
    public static void main(String[] args) {  
         if(a == b){     
                System.out.print("因为a,b是基本类型,所以此时比较的是a, b 的值"); 
     } 
   }     
}

当a,b是基本类型,那么== 运算符比较的就是基本类型的值。如果a,b 是引用类型, 那么== 运算符比较的还是a,b 的值吗?

public class Demo {  
private static String a = "china";  
private static String b = "china";  
public static void main(String[] args) { 
   if(a == b){      
   System.out.print("因为a, b是引用类型, 所以此时比较的是对象a, b的地址值");    
   }  
   }
  }

可知,当a,b是引用类型,那么== 运算符比较的就是引用类型的对象地址值。如果a,b 是引用类型,那么equals()方法比较的是什么呢?

  private static int a = 100;  
  private static int b = 100;   
  public static void main(String[] args) {             
       if(a == b){                
       System.out.print("因为a,b是基本类型,所以此时比较的是a, b 的值");     
      }     
     }     
   }

可知,默认情况下,equals()方法比较的是对象与自身是否一致。当对象与自身一致时,equals()方法与== 是一样的。如果重写equals()方法,是否可以比较对象的内容呢?

class Pig {
  private String name;  
  public void setName(String name){  
    this.name = name;  
    }  
    public String getName(){    
    return name;  
    }  //  重写equals()方法, 用于比较对象的属性内容是否一致  
    public boolean equals(Object anObject) {  
      // 判断对象与自身是否一致    
      if (this == anObject) {      
      return true;    
      }   //  判断anObject与String是否为同类或存在继承关系    
      if (anObject instanceof String) {        return true;    
      }    
      //判断是同一类或者子父类关系,则将Object类型强转为Pig    
      Pig pig = (Pig)anObject;   
      // 比较pig的属性name的内容是否一致    
      if(this.name == pig.name && this.name.equals(pig.name)) {      
      return true;    
      }else {      
      return false;    
      }  
      }
      }

重写equals()方法,equals()方法是可以比较对象属性内容是否一致的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极客叔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值