课程
/后端开发
/Java
/Java入门第三季
字符串是否相等不是用 equals 吗?为什么用 == 啊??
2016-02-03
源自:Java入门第三季 2-2
正在回答
都可以,但是意义可能不同。
举个例子:
在String类中,当你已经在内存中定义了s1 = "abc",那么当你再次定义一个s2 = "abc"时,系统就会自动检测出"abc"这个字符串已经存在了,此时系统就不会给s2重新分配地址值,而是把它直接指向了s1的地址值,使得s1 == s2了;
但是,如果你这样定义:s1 = "ab";s2 = s1 + "c";那么,s2==s1吗?就不等于了,在这个时候就只能用equals,有==运算符就不对了。
_Jack_Han_
画师 提问者
==是比较变量指向的对象内存地址,equals方法也是比较对象的内存地址,但是String类的equals方法和HashCode方法被重写,用来判断两个对象的类型和值是否相等,也就是字符串的值是否相等(这里可以参考前面Java入门第二季3-9节),所以这两个方法在这里是不同的。
==和equals在比较对象上本身是相同的,但我们在使用equals的时候往往会重写equals方法,让它比较值是否相等。
==是判断两个String对象的地址(对象的引用)是否相同,equals是判断两个String内容是否相同
首先equals是所有父类Object的比较两个对象内容是否相等的方法。==是基本数据类型的比较运算符,但是==在比较对象的时候等价于equals,第二,书写相比之下也比较方便。底层的实现逻辑都是一样的,不需要纠结。
举报
Java中你必须懂得常用技能,不容错过的精彩,快来加入吧
6 回答输入一个字符串,如何比较是否和数组中的某个字符串相等?
2 回答为什么不能用getBytes()判断字符是否相同???
1 回答字符是不是不能用equals啊
2 回答所以什么情况下两个字符串对象相等?用“==”比较。
3 回答为什么判断ID是否被占用不用equals??