This is the piece of code I used from the SCJP book. I understand that == compares the memory location of the objects to find the equality and .equals compares the hashcode to determine the equality.
My question is in the below snippet, in the overrided equals method we compare :
(((Moof)o).getMoofValue()) == this.getMoofValue()
in the above code, does the == compare the memory location of the string value? If it does then it should be false. But it returns true. How does the == work here?
public class EqualsTest {
public static void main(String args[]){
Moof one = new Moof("a");
Moof two = new Moof("a");
if(one.equals(two)){
System.out.println("Equal");
}
else{
System.out.println("Not Equal");
}
}
}
public class Moof {
private String moofValue;
public Moof(String i){
this.moofValue = i;
}
public String getMoofValue(){
return this.moofValue;
}
public boolean equals(Object o){
if((o instanceof Moof) && (((Moof)o).getMoofValue()) == this.getMoofValue()){
return true;
}
return false;
}
}