美文网首页
javaSE - 005 - java.lang.String

javaSE - 005 - java.lang.String

作者: 离子来了 | 来源:发表于2016-03-28 23:19 被阅读13次
       String a = "aaa";
       String b = "aaa";
       System.out.println("aaaaaa" == "aaa"+ new String("aaa")); //false
       System.out.println("aaaaaa" == "aaa"+"aaa");//true 
       System.out.println("aaaaa" == "aaa" + b); //false
    
    • 总结:
      1.字面量 拼接 字面量,结果还是在常量池(内存剖析中有说)中创造一个新的字面量。java字符串常量池只会产生一个相通的字符串常量
      2.非字面量的字符串 拼接 字面量,应该还是在堆区开辟的内存地址。所以才会有上面的结果
      3.拼接返回字面量中引用的有且只有中间那种情况
    String s = new String("aaa");
    
    • 执行如下
      1.先检索字符串池是否有"aaa"对象,有则使用,无则创建
      2.然后用字符串池中的"aaa"对象来在堆中创建new String("aaa")对象,并且将引用赋值给棧区的s

    相关文章

      网友评论

          本文标题:javaSE - 005 - java.lang.String

          本文链接:https://www.haomeiwen.com/subject/fftslttx.html