为什么字符串是否相等用==不是equals吗

来源:2-2 Java 中字符串的不变性

画师

2016-02-03 12:51

字符串是否相等不是用 equals  吗?为什么用  ==  啊??

写回答 关注

5回答

  • 彼岸云端
    2016-02-03 14:10:34
    已采纳

    都可以,但是意义可能不同。

    举个例子:

    在String类中,当你已经在内存中定义了s1 = "abc",那么当你再次定义一个s2 = "abc"时,系统就会自动检测出"abc"这个字符串已经存在了,此时系统就不会给s2重新分配地址值,而是把它直接指向了s1的地址值,使得s1 == s2了;

    但是,如果你这样定义:s1 = "ab";s2 = s1 + "c";那么,s2==s1吗?就不等于了,在这个时候就只能用equals,有==运算符就不对了。

    画师

    非常感谢!

    2016-11-08 21:32:11

    共 2 条回复 >

  • ting0fdnb
    2016-03-10 16:12:05

    ==是比较变量指向的对象内存地址,equals方法也是比较对象的内存地址,但是String类的equals方法和HashCode方法被重写,用来判断两个对象的类型和值是否相等,也就是字符串的值是否相等(这里可以参考前面Java入门第二季3-9节),所以这两个方法在这里是不同的。

  • 学学萌萌哒
    2016-03-06 11:14:45

    ==和equals在比较对象上本身是相同的,但我们在使用equals的时候往往会重写equals方法,让它比较值是否相等。

  • 一条小咸鱼
    2016-02-06 23:41:57

    ==是判断两个String对象的地址(对象的引用)是否相同,equals是判断两个String内容是否相同

  • 越少
    2016-02-03 14:04:38

    首先equals是所有父类Object的比较两个对象内容是否相等的方法。==是基本数据类型的比较运算符,但是==在比较对象的时候等价于equals,第二,书写相比之下也比较方便。底层的实现逻辑都是一样的,不需要纠结。

Java入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409792 学习 · 4340 问题

查看课程

相似问题