易混问题总结---(equals VS ==)

==和equals
“測試物件參考時,唯有當兩個參考指向同一物件時,==運算子的結果才為true,同樣的,
唯有當兩個參考指向不同物件時,!=運算子的結果才為true,這兩個運算子的處理與物件
的內容無關。需要特別注意的是,在String中使用==,因為Java為節省記憶體,會在某一
輪調區中維護唯一的String物件,所以如果在類別裡使用同一字串,Java只會建立一個唯
一的字串而已。”[参考-->(equals和==)]
在Object中equals和==都是默认比较两个reference是否是指向同一对象的,但是由于
在String中equals被覆写了,所以equals对于String来讲是比较内容的了。但是对于其他
的类的对象的内容的比较该怎么半呢,那就只要自己覆写了,举个例吧:
class BecauseLove
{
  public String str="";
  BecauseLove(String s){
    str=s; 
 }
//+---------override-------------+
 public boolean equals(Object o){
    if(this==o){//先比较是否是指向同一对象
        return true;
    }
    if(o instanceof BecauseLove){//instanceof操作符的作用是判断一个变量是否是右操作数指出的类的一个对象
        BecauseLove bl=(BecauseLove)o;
        return str.equals(bl.str);
    }
    return false;
 }
//+---------------------------------+
}
class TestBL
{
  BecauseLove BL1 = new BecauseLove("First");
  BecauseLove BL2 = new BecauseLove("First");
  void compare(BecauseLove a ,BecauseLove b){
  if (a.equals(b))
  {
   System.out.println("Yes");
  }
 }
  void test(){
    compare(BL1,BL2);
  }
 public static void main(String args[]){
  TestBL t = new TestBL();
  t.test();
}
 }
+——--------------------------------------+
这样就可以比较对象的内容了。当然在覆写过程中会要注意一些问题的,具体是什么问题还在学习中……
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值