码迷,mamicode.com
首页 > 其他好文 > 详细

string 常量池的理解

时间:2016-12-24 19:53:51      阅读:413      评论:0      收藏:0      [点我收藏+]

标签:复制   代码   也有   pen   情况   为什么   null   print   new   

1:

  String a="123";

  String b="12"+"3";

  String c="1"+"23";

  System.out.println( a==b );true

  System.out.println( a==c );true

 

 

2:

  String a = "ab";

  String bb = "b";

  String b = "a" + bb;

  System.out.println((a == b)); //result = false

 

3:

  String a = "ab";

  final String bb = "b";

  String b = "a" + bb;

  System.out.println((a == b)); //result = true

 

 

总结如下:

  String  s  =  "a" + "b" + "c";

  就等价于String s = "abc";

  String  a  =  "a";

  String  b  =  "b";

  String  c  =  "c";

  String  s  =   a  +  b  +  c;

  这个就不一样了,最终结果等于:

  Java代码

  StringBuffer temp = new StringBuffer();

  temp.append(a).append(b).append(c);

  String s = temp.toString();

看清了这个是等于,没错就是等于,为什么,这种情况太普遍了,java编译器早就对这个进行了优化,优化代码就是上面的那样的,

但是优化也不是万能的,复制一个经典垃圾代码:

     String s = null;

       for(int i = 0; i < 100; i++) {

           s += "a";

      }

这个代码就算优化也有100个stringbuilder对象,

 

string 常量池的理解

标签:复制   代码   也有   pen   情况   为什么   null   print   new   

原文地址:http://www.cnblogs.com/donghang/p/6217779.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!