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

s3==s4 false?

s3==s4  false??????? but why?

提问者:Victor_Xu 2016-04-02 20:28

个回答

  • 精慕门7137578
    2016-07-06 15:10:02

    String s = "xxxx";
    创建s之前系统会先在"池子"中查找是否已经存在这个字符串, 如果存在则直接符号该字符串的句柄
    如果不存在, 系统会创建一个新"xxxx"字符串, 并返回句柄, 以后再有"xxxx"被要求创建, 系统不会创建新的,而是直接返回已经存在的字符串的句柄

    String s = new String("xxxx");
    系统不会去"池子"中查找, 直接在内存中新开辟一块空间, 初始化为"xxxx",并返回句柄

  • 怒放的生命012
    2016-06-03 22:40:44

    我感觉s3和s4的地址应该一样,可能有空格吧


  • Victor_Xu
    2016-04-02 20:31:44

    看了“等待天亮”的回答,明白了。字符串之间的比较,是比较内存首地址是否相同,而不是内容。