您的位置:首页 > 移动开发 > Objective-C

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

2004-08-12 11:22 435 查看
==和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();
}
 }
+——--------------------------------------+
这样就可以比较对象的内容了。当然在覆写过程中会要注意一些问题的,具体是什么问题还在学习中……
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息