问答详情
源自:2-2 Java 中字符串的不变性

我是终于理解了啊。。关于课堂作业的S3 == S4的问题

前面都没有什么说的,主要是觉得S3和S4的内存地址为什么不等没有理解。现在我就说说我的理解,当然最开始还是要先理解常量池和堆内存到底是怎么回事。。


看字面意思,我始终觉得S3和S4不是都存的两个常量么,结果突然醒悟,tm的,原来S1是一个变量,当然最终是要把S3和S4的内存地址不同了。。


普及一下S1是将字符串存在常量池中,所以它的地址是常量池给的。同样S2也是常量池给的地址,地址都是字符串常量"imooc"的地址,所以s1和s2的地址是一样的。。

然而s3是一个常量加上一个变量,因此是存在堆内存中,这个地址是堆内存新给s3的。

同理,s4的地址也是堆内存给他的。。因此s3和s4的内存地址是不一样的

提问者:cicineer 2016-01-19 09:09

个回答

  • konglq
    2016-01-19 09:48:34

    理解比较透彻,赞一个