javaSE - 005 - java.lang.String

   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)