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对象,

最新文章

  1. jsfl脚本设置导出AS链接名遇到的奇怪问题
  2. 如何使用sysdba身份通过jdbc连接oracle?
  3. [AngularJS] Best Practise - Controller
  4. MarshalByRefObject浅析
  5. iOS获取当前app的名称和版本号-by
  6. mysql版本问题sql_mode=only_full_group_by
  7. 由查找session IP 展开---函数、触发器、包
  8. C++ 全局构造函数调用的顺序
  9. gridcontrol如何根据值来动态设置某一行的颜色
  10. Unity SteamVR插件集成
  11. linux学习笔记:1.基础知识和命令行基本操作
  12. OKHttp使用详解
  13. TCCSuperPlayerView让Delphi支持app视频播放!
  14. c、c++---linux上的GetTickCount函数
  15. IIS7的网站通过https访问提示ssl_error_rx_record_too_long
  16. js的浮点(小数)数+-*/
  17. 转:Uncovering Drupalgeddon 2(cve-2018-7600)漏洞深度解析(附漏洞利用代码地址)
  18. SLF4J和Logback日志框架详解
  19. python线程池应用场景-爬虫
  20. A full JDK must be specified

热门文章

  1. .net post的参数如果出现乱码如何解决!
  2. 【Lua学习笔记之:Lua环境搭建 Windows 不用 visual studio】
  3. scrapy的scrapyd使用方法
  4. JAVA面试中问及HIBERNATE与 MYBATIS的对比,在这里做一下总结
  5. netty 解决TCP粘包与拆包问题(二)
  6. java 线程 障碍器
  7. html5 drag
  8. 第一次接触servlet的知识
  9. SQL Server2014,附加数据库失败,错误为:5120的解决方法
  10. jQuery的deferred对象学习