为什么s1是变量? ( // s1是变量,s4在运行时才知道具体值,所以s3和s4是不同的对象)

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

梁冲

2015-08-20 18:44

http://img.mukewang.com/55d5af7d0001bb9f08340420.jpg为什么不是同一个

写回答 关注

1回答

  • aiyungui
    2015-08-20 22:58:42
    已采纳

    s1是一个方法内部变量,在类加载、验证、准备、解析、初始化等过程中是不会对s1变量进行正式赋值的,只有在使用时才对其进行初始化。 String是一个对象,s3、s4的变量赋值隐藏了一个初始化实例的过程String s3 = new String(),既然s3与s4是不同的实例对象,那么它们的内存地址也就不一样了。当使用equals()方法时,s3与s4相等,是因为比较的是字符值而不是内存地址。

    梁冲

    非常感谢!

    2015-08-21 12:30:17

    共 1 条回复 >

Java入门第三季

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

409792 学习 · 4340 问题

查看课程

相似问题