例题中的s3与s4.

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

慕先生9431606

2018-01-19 17:36

String s4 = "I love " + s1;
         //比较字符串s4和s3
  // s1是变量,s4在运行时才知道具体值,所以s3和s4是不同的对象

为啥s3和s4不一样?他俩都是同样得来的,并没有用new创建啊?


写回答 关注

2回答

  • kiou1900
    2018-01-19 22:05:24
    已采纳

    String 类型的字符串是不可变的,如果改变了,其实是创建了新的对象,然后变量指向了新对象的内存地址,废除了原来指向的内存地址。用I love+s1连接后,实际上是创建了一个新的对象,也就有了新的内存地址,s3和s4各自创建了一个新对象,所以说他们2个用==比较的结果是false。

    qq_老子是... 回复慕先生943...

    String s4 = "I love " + s1;这里面其实是两个对象,自己本身是一个对象然后再new了一个对象,所以没加new就是一个对象,也可以把 String s1 = "imooc";称之为变量,但严格来说是一个对象。

    2018-06-22 01:00:33

    共 2 条回复 >

  • H9847934
    2021-02-21 16:28:35

    还是想请问,s1与s2“==”判定,s3与s4“==”判定有什么区别,不明白为什么一个是true,一个是false

Java入门第三季

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

409792 学习 · 4340 问题

查看课程

相似问题