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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容