==和equals的区别? 不要这么官方,通俗一些,好理解一些

君莫笑丶H 2018-07-31 08:24:20
==和equals的区别? 不要这么官方,通俗一些,好理解一些?
...全文
1125 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
比如说,同一栋楼,有一个街道名称,和一个开发商起的名称,
那么用== , 就是比较这2个名称的地址.是不是一样. 返回的就是ture

equals,就是比较这两个是不是一样的, 比如这栋楼里面,1楼两开门, 1-2和11-1. 虽然他们都是同一栋楼,但是返回的就是false
Mingyueyixi 2018-08-15
  • 打赏
  • 举报
回复
引用 30 楼 Mingyueyixi 的回复:
两个箱子,各带一条绳子。==比较的是它们的绳子,equals比较的是箱子和箱子里的东西。
但java中equals可以被重写,改成你自定义的相等的条件。比如,一个Student类,有很多属性,你重写equals,只要name相等,两个对象就相等,而不管其他条件,如年龄什么的(仅仅举例,此处实际上不应重写)。

==比较的是它们的绳子最终所指向的位置,equals比较的是箱子和箱子里的东西。
Mingyueyixi 2018-08-15
  • 打赏
  • 举报
回复
两个箱子,各带一条绳子。==比较的是它们的绳子,equals比较的是箱子和箱子里的东西。
但java中equals可以被重写,改成你自定义的相等的条件。比如,一个Student类,有很多属性,你重写equals,只要name相等,两个对象就相等,而不管其他条件,如年龄什么的(仅仅举例,此处实际上不应重写)。
Finn 2018-08-09
  • 打赏
  • 举报
回复
==比较的都是内存地址,equals是Object类中的方法,你可以看看源码,里面的实现其实就是判断是否==,也就是内存地址是否一致

但是如果你说的是String类的equals的话,因为String类的equals方法是重写过了的,不管是==还是两个字符串内容一样都会返回true,
具体怎么实现的你看看源码就明白了
偏安zzcoder 2018-08-09
  • 打赏
  • 举报
回复
引用 20 楼 jiajing1990_ 的回复:
[quote=引用 18 楼 kingslave1 的回复:]
[quote=引用 3 楼 jiajing1990_ 的回复:]
举个例子,A和B手上各牵着一根绳子,绳子那头牵着一个箱子,== 就是看他们绳子那头的是不是牵着同一个箱子,equals 就是看他们绳子那头箱子里的东西是不是一样的都是蓝莓味的3+2饼干,

楼主吃货属性暴露了[/quote]
我不是楼主呀,[/quote]
尴尬,版主看成了楼主
jiajing1990_ 2018-08-08
  • 打赏
  • 举报
回复
引用 18 楼 kingslave1 的回复:
[quote=引用 3 楼 jiajing1990_ 的回复:]
举个例子,A和B手上各牵着一根绳子,绳子那头牵着一个箱子,== 就是看他们绳子那头的是不是牵着同一个箱子,equals 就是看他们绳子那头箱子里的东西是不是一样的都是蓝莓味的3+2饼干,

楼主吃货属性暴露了[/quote]
我不是楼主呀,
一个治疗术 2018-08-08
  • 打赏
  • 举报
回复
引用 3 楼 jiajing1990_ 的回复:
举个例子,A和B手上各牵着一根绳子,绳子那头牵着一个箱子,== 就是看他们绳子那头的是不是牵着同一个箱子,equals 就是看他们绳子那头箱子里的东西是不是一样的都是蓝莓味的3+2饼干,

就很形象了
偏安zzcoder 2018-08-08
  • 打赏
  • 举报
回复
引用 3 楼 jiajing1990_ 的回复:
举个例子,A和B手上各牵着一根绳子,绳子那头牵着一个箱子,== 就是看他们绳子那头的是不是牵着同一个箱子,equals 就是看他们绳子那头箱子里的东西是不是一样的都是蓝莓味的3+2饼干,

楼主吃货属性暴露了
whyyouhitme_ 2018-08-08
  • 打赏
  • 举报
回复
回去看书去!
yuyishui 2018-08-08
  • 打赏
  • 举报
回复
Java在==和equals的处理上还是比较良心的,c#的运算符重载可以重写掉==的内存地址比较
戎码一生灬 2018-08-08
  • 打赏
  • 举报
回复
就好比现在有两个人,一个男人一个女人,==就是比较他俩是否都有胳膊,是否都有腿,equals比较的是他俩是否都有小鸡鸡,是否都来大姨妈
qq_34286226 2018-08-08
  • 打赏
  • 举报
回复
这就相当于我有甲乙两个邻居,都叫张三。用equals判断他们不是同一个人(根据人本身判断的),用“==”判断他们就是同一个人(根据名字判断的)。
qq_42913780 2018-08-08
  • 打赏
  • 举报
回复
==判断两个对象的地址值。equals判断对象中的属性是不是相同的。属性就是成员变量。new两个对象,不管他们的属性是否相同,只要使用==进行判断,都会返回false。因为他们不是一个对象,所以地址值肯定不同。
编程小透明 2018-08-07
  • 打赏
  • 举报
回复
== 比较内存地址 equals 比较内容
  • 打赏
  • 举报
回复
==比较对象(包括内容和地址)
equals比较内容(字符数量、大小写等,不比较地址)
Hello_蓝Sir 2018-08-04
  • 打赏
  • 举报
回复
== 是比较运算符,对于字符串及对象而言,比较的是地址值
equals重写后可比较字符串及对象的内容.
涉及类的对象比较的话,建议使用equals
Ning静致远 2018-08-04
  • 打赏
  • 举报
回复
==一般用于判断基本数据类型的相等
equals用于判断引用类型的值相等
一座雨城丶 2018-08-03
  • 打赏
  • 举报
回复
==一般用于比较地址,也就是引用。
基本数据类型是直接取真实值的,特殊的String是直接从数据池取值,其他的引用数据类型都是通过栈内存的地址指向堆里的内容。
equals是继承于Object的方法,如果重写了该方法如String类,比较的就是里面的内容;如果没有重写例如StringBuffer类,比较的就是地址
ForestDB 2018-08-03
  • 打赏
  • 举报
回复
==看的是两个是不是同一个东西,equals看的是两个东西的内容是不是一样的。
qq_42549835 2018-08-03
  • 打赏
  • 举报
回复
==是一个比较运算符号,既可以比较基本数据类型,也可以比较引用数据类型,基本数据类型比较的是值,引用数据类型比较的是地址值
* equals方法是一个方法,只能比较引用数据类型,所有的对象都会继承Object类中的方法,如果没有重写Object类中的equals方法,equals方法和==号比较引用数据类型无区别,重写后的equals方法比较的是对象中的属性
加载更多回复(10)

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧