为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
Java

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;


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
0
获赞与收藏
1

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 1
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消