==和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();
}
}
+——--------------------------------------+
这样就可以比较对象的内容了。当然在覆写过程中会要注意一些问题的,具体是什么问题还在学习中……
“測試物件參考時,唯有當兩個參考指向同一物件時,==運算子的結果才為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();
}
}
+——--------------------------------------+
这样就可以比较对象的内容了。当然在覆写过程中会要注意一些问题的,具体是什么问题还在学习中……
博客主要介绍了Java中==和equals的使用。==和!=比较对象参考时与内容无关,String中使用==因内存优化有特殊情况。Object里equals和==默认比较引用,String中equals被覆写为比较内容,还给出覆写equals比较对象内容的示例。
165

被折叠的 条评论
为什么被折叠?



