为什么​s1==s2是true,s3==s4是false

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

等待天亮

2016-03-07 17:36

为什么s1==s2是true,s3==s4是false

写回答 关注

3回答

  • qq电子时代
    2016-03-23 09:02:42

    字符串可以说在被创建后便是一个常量,内容不可更改。

    更改的话相当于变相创建了一个新的字符串。

    s1创建了一个字符串为imooc,将这个常量保存在了内存里。

    创建s2时,由于s2创建的内容和s1一样,所以s2并没有在内存中创建一个新的字符串,而是指向s1所创字符串的内存地址,所以s1和s2指向的是同一个常量,s1=s2。

    s3是在s1的基础上创建了一个新的字符串I love imooc,创建时开辟了新的内存地址

    s4同理,也是在s1上创建了新的字符串。

    字符串之间的比较,是比较内存首地址是否相同,而不是内容。

    所以s1和s2在内存的指向上是相同,而s3和s4是各自新开辟的字符串,事先建立的字符串后付的值,所以s3和s4指向的内容并不是一个,所以内存地址不同,从而不相等


    暮女神

    完美的回答

    2017-02-05 22:26:46

    共 1 条回复 >

  • Hengnzh
    2016-03-07 19:01:54

    “==”是存储内存地址的比较。

    s1和s2是赋值字符,指向同一个内存地址。s3和s4是不同的对象,指向不同的内存地址

  • 噼里啪啦小能手
    2016-03-07 18:59:38

    因为s3,s4的内存地址不一样

Java入门第三季

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

409792 学习 · 4340 问题

查看课程

相似问题