程序员一代码搬运工
【Java学习心得和Java学习技术个人总结】

String内存地址不一样

private static final String MESSAGE = "taobao";
     
public static void main(String[] args) {
    String a = "taobao";
    String b = "tao";
    String c = "bao";
      System.out.println(a == MESSAGE);
    System.out.println((b+c) == MESSAGE);//为什么这个是false?
}

 

true

false

为什么 这两个不同呢。。

 

 

在做字符串的连接的时候往往是开辟一个新内存空间,

把bc的值复制过去连接,

所以b+c的地址跟a的地址是不一样的,

而给a赋值的时候,

内存中已经有一个区域是taobao了,

所以就直接引用过去了。另,如果后文对a的值进行修改,

过程也是先新分配空间在把a的指向改过去,

而不是在a所指向的原有空间中进行直接修改

 

 

 

如果 用 的是 equals   比 的就是 值  这就相同了

 

赞(0)
未经允许不得转载:程序员一代码搬运工 » String内存地址不一样
分享到: 更多 (0)