社区
Java SE
帖子详情
java == equals()问题,求教下面是为什么?
轮回中少我一人
2017-10-04 05:02:10
...全文
459
10
打赏
收藏
java == equals()问题,求教下面是为什么?
[图片]
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
u010222066
2017-10-13
打赏
举报
回复
1楼答的不错
jaramyZXG
2017-10-12
打赏
举报
回复
创建s2的时候. Java机制肯定是先去查找内存中是否有这个字符串的内存地址,如果有则指向,没有才创建。后两个就不用说了
zz11style
2017-10-08
打赏
举报
回复
从控制台输入的时候,地址是不同的
李德胜1995
2017-10-08
打赏
举报
回复
一个人L
2017-10-08
打赏
举报
回复
你从控制台输入一个字符串相当于new String()所以s3的地址时不同的。
水货丶
2017-10-07
打赏
举报
回复
s1和s2都不是通过new关键字创建的字符串,所以这两个引用指向的字符串都不是堆中的,而是在常量池中的“aaa”,编译器优化后,它们是指向同一个在常量池中的“aaa”. s3是通过控制台读取的输入,next()方法返回一个String,这个String应该是在堆中根据输入的字符串创建的。因此s1和s2的引用是相同的,s3的引用指向的是堆根据输入新创建的字符串,和s1,s2指向的常量池中的肯定不同。String类重写了equals()方法,比较的是字符串中每个字符是否相同,s1和s3每个字符都相同,因此返回true.
江苏科技大学_计算机学院_潘磊
2017-10-05
打赏
举报
回复
s1和s2不是new出来的,而且它们指向的内容一致,所以就指向了相同的内存地址,都指向"abc"。 s3是通过键盘输入的,相当于是new出来的,这个时候是直接分配一个新的内存地址,虽然还是指向"abc",但是这个"abc"和上面那个"abc"不在同一个地址。 至于equals方法,只判断指向的内容是否相同,不判断地址是否相同。
ascarl2010
2017-10-04
打赏
举报
回复
百度贴吧也看到同样的问题
zhaofengtxlxz
2017-10-04
打赏
举报
回复
s1和s2都不是通过new关键字创建的字符串,所以这两个引用指向的字符串都不是堆中的,而是在常量池中的“aaa”,编译器优化后,它们是指向同一个在常量池中的“aaa”. s3是通过控制台读取的输入,next()方法返回一个String,这个String应该是在堆中根据输入的字符串创建的。因此s1和s2的引用是相同的,s3的引用指向的是堆根据输入新创建的字符串,和s1,s2指向的常量池中的肯定不同。String类重写了equals()方法,比较的是字符串中每个字符是否相同,s1和s3每个字符都相同,因此返回true.
在
java
中==和
equals
()的区别
在
Java
学习和面试中经常遇到这个
问题
,虽然想着简单,但还是决定记录下来,毕竟菜嘛...... ==: ==是直接比较的两个对象的堆内存地址,如果相等,则说明这两个引用实际是指向同一个对象地址的。但是我们又常常碰到这样一个
问题
最终结果是true,true,那既然==是比较的地址,那么int数据的地址是怎样的呢,String又是怎样的呢? 对于基本数据类型(byte,short,cha...
Java
中==和
equals
()的区别
==和
equals
()最大的区别是:一个是运算符,一个是方法。 ==:如果比较的对象是基本数据类型,则比较数值是否相等;如果比较的是引用数据类型,则比较的是对象的地址是否相等。
equals
():用来比较两个对象的内容是否相等。 注意:
equals
方法不能用于基本数据类型的变量,如果没有对
equals
方法进行重写,则比较的是引用类型的变量所指向的对象的地址。 ...
Java
中 == 与
equals
() 详解
在
Java
中,== 和
equals
() 是用于比较两个变量是否相等的两种方式,但它们的行为和适用场景有所不同。== 用于比较基本数据类型的值或引用类型的内存地址,而
equals
() 用于比较对象的内容是否逻辑相等,通常需要重写该方法。字符串、包装类和自定义对象的比较中,== 和
equals
() 的结果可能不同,尤其是在处理字符串常量池、自动装箱缓存和数组时。为了避免常见的错误,建议在比较对象时优先使用
equals
(),并在自定义类中正确重写
equals
() 和 hashCode() 方法。此外
Java
中==与
equals
()的分析
前言 == 和
equals
是经久不衰的面试题,记得刚毕业的时候我也被问到过很多次,从最开始的一脸懵逼到最后的从容回答,本文我们就来分析下这两者之间的区别和联系。 为避免阅读疲劳,我这里先放上结论: 联系: 两者都被用来进行比较操作 当
equals
()未被重写时,两者的用途和比较的内容相同,即都是比较对象的引用地址是否相同 区别: ==既可以比较基本数据类型,亦可用在对象之间。
equals
(...
== 与
equals
() 的区别
带你全面理解=和
equals
的区别,从底层到代码实例
Java SE
62,620
社区成员
307,251
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章