日期:2014-05-20  浏览次数:20629 次

学习java Thinking in java 书中有段代码 & 和 equals() 关于本题 求解
import   java.lang.String;
public   class   Test    
{
public   static   void   main(String[]   args)  
{
int   i=100;
int   j=80;
int   k=25;
System.out.println(k&j);
Yu   yu1   =   new   Yu();
Yu   yu2   =   new   Yu();
yu1.i=yu2.i=100;
System.out.println(yu1.equals(yu2));


}
}
class   Yu
{
int   i;
}

------解决方案--------------------
k&j按位与 
25&80
00011001&01010000=00010000 =16
yu1.equals(yu2)
由于没有重写equals方法 调用 object的equals方法
Java code
    public boolean equals(Object obj) {
    return (this == obj);
    }

------解决方案--------------------
一楼正解。
Yu yu1 = new Yu();
Yu yu2 = new Yu(); 
这里是两个对象,equals比较的是内存地址是否相同。所以这里的比较结果应该是false,因为没有指向同一个内存地址
------解决方案--------------------
Java code
@Override
public boolean equals(Object obj){ 
if(this == obj){
return true;
}
if(obj instanceof Yu)
    if((Yu)obj.i=this.i){
         return true;
    }
}
return false;
}

------解决方案--------------------
Yu)obj.i==this.i