手记

java 学习日志——equals的应用,以及==与equals的对比

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;


0人推荐
随时随地看视频
慕课网APP

热门评论

纯属记录。如有错误,还望海涵。并指出

查看全部评论