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

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

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

提问者:梁冲 2015-08-20 18:44

个回答

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

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