equals 在eclipse中的使用。
语法
Dog dog1=new Dog(); Dog dog2=new Dog();
dog1.equals(dog2);//比较dog1和dog2. 其中dog1和dog2都是对象的引用。
要判断两个对象是否相等(相同)首先在子类中重写equals。方法如下:
source——Generate hashcode()and equals()
在没有重写时equals比较的是 对象的引用是否指向同一地址。一般情况下。两者必不相等。
在的 Dog 类下重写equals后获得如下代码,代码意思看注释。
public boolean equals(Object obj) { if (this == obj) //判断两个引用的地址是否相同 return true; if (obj == null) //如果另一个对象是空值 return false; if (getClass() != obj.getClass()) /*getClass()得到类对象,判断两个对象的类型是否相等*/ return false; smartPhone other = (smartPhone) obj; //导入属性值 if (cpu != other.cpu)//判断两个对象的属性值是否相同 return false; return true; }
equals 与 == 的比较
比较时先了解在java中储存的方式{栈和堆}
java中基本类型储存在栈中(Stack)复合型数据储存在堆中(Heap)
String str; str=new String("Hello World!");
其中对象变量(str)并不是对象实例本身,而是对象的一个引用地址。这个地址用来指向对象实例在堆(Heap)中的位置。所以我们可以知道对象变量中存的是地址(地址储存在栈中)。而该地址指向对象实例对象实例储存在堆中)。
所以如果 == 比较的是数值类型的值 ——java中的基本数值类型值(8种)。
那么是直接判断两者是否相同,就如数学中的1是否等于2这样的判断
再者 如判断的两者不是数值类型。例如是String。
语言如下:
String str1 =new String("abcd"); String str2 =new String("abcd");
两者地址不同。故str1==str2比较是 false;
热门评论
纯属记录。如有错误,还望海涵。并指出