java中的equals方法和==号的使用区别

33 篇文章 0 订阅
31 篇文章 0 订阅

java中的equals方法和==号的使用区别

java的面向对象中有一个特别神奇的方法,它可以比较对象,也可以在我们的定义下为我们所用,进行对象的比较。谈起比较,我们就不由得想起来==运算符,那么接下来我就谈谈我对这俩的看法。

一. = = 运算符
根据我们的学习和使用我们发现:
1.“= =”运算符可应用于基本数据类型变量和引用型数据变量中(boolean型除外,不是欺负它,它是真的很难比较。。。)
比如,这就是可以的(部分代码):

char c1=65;
char c2='A';
if(c1==c2){
system.out.println(c1+"\t"+c2);
}

2.==运算符的比较本质:如果比较的是基本数据变量,则比较的是两个变量保存的值是否相同(比较的类型可以不相同,别忘记类型自动提升);如果比较的是引用型的数据变量,则比较的是这几个对象的地址值,即看其是否指向同一个实体对象。

经过==运算符的总结,聪明的小伙伴都发现了个问题,就是我想比较两个存在不同实体对象中的东西时该如何比较呢,万一人家地址不同,但是内容相同咋整?ok,那就看看equals如何秀他的操作叭.

二.equals方法的使用(注意点和使用我就直接一起说了)
1.equals是一个方法,而不是运算符。
2.equals只适用于引用型的数据类型。
3.equals在Object中是和==相同作用的,它在object中的代码如下:

public boolean equals(Object obj){
	return (this==obj);
}

4.equals的使用格式:
假如要比较引用型的str1和str2,只需要将其写成:

str1.equals(str2)

5.其实,我把第三点中的object特别提出来说明是因为equals只有在像String,Date,File以及包装类重写了object中的equals后才可比较两个对象的实体内容,否则,还是比较地址。
6.通常,我们会选择重写equals以便于我们比较实体内容。(一般编译器有自动生成的快捷方式求)如果自己写,我们可以先比较他们的地址(如第三点中的代码),再进行别的比较,尽可能的减少计算。

最后,我总结下equals方法的几个特点:
1.对称性:比较的两个对象谁前谁后对结果没影响。
2.自反性:x.equals(x)是true的。
3.传递性:和等法传递一样。
4.任何时候,x.equals(null)是false的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值