以前写了个字符串是否来自池的文章

只说明了有的字符串来自池,有的是在堆上新建,但是没有深究,只从现象去推测了,今天我们来看看究竟发生了什么

下图(源码和字节码)很清晰地看到s3实际上是新建了一个StringBuilder,然后append了def,然后再toString的,难怪会不同了

再来看下图,s1和s2定义为final之后,字节码简洁了很多,s3的值明确为abcdef且来自常量池

java编译器对字符串+运算的优化导致的有趣现象相关推荐

  1. 灵魂拷问:用移位来代替除法运算真的效率高吗?Java 编译器到底有没有做除法优化?

    目录 引入 C++ 编译器对除法的优化 Java 编译器对除法的优化 移位运算对应的字节码 除法操作对应的字节码 查看及分析 JIT 即时编译结果 1.手动编译 OpenJDK 2.编译 hsdis- ...

  2. Java编译器优化与运行期优化技术浅析

    2019独角兽企业重金招聘Python工程师标准>>> 一.java编译器优化 1. JVM的编译器可以分为三个编译器:      1)  前端编译器:把.java转变为.class ...

  3. Java并发学习二:编译优化带来的有序性问题导致的并发Bug

    Java并发学习系列文章:Java并发学习-博客专栏 今天在学习极客时间专栏:<Java并发编程实战> 第一讲01 | 可见性.原子性和有序性问题:并发编程Bug的源头中提到: 编译器及解 ...

  4. java类用三木运算编译不生效_Java 中的三目运算符使用不当所导致的问题

    Java 中的三目运算符使用不当所导致的问题 写在前面: 1.三目运算符是我们经常在代码中使用的,a= (b==null?0:1); 这样一行代 码可以代替一个 if-else,可以使代码变得清爽易读 ...

  5. [转载] Java中的字符串处理

    参考链接: Java中的StringBuffer appendCodePoint()方法以及示例 JDK8在线Api中文手册 JDK8在线Api英文手册 Java中的字符串处理 1.1 String类 ...

  6. java split()方法_Java编程性能优化一些事儿

    点击上方 "程序员小乐"关注, 星标或置顶一起成长 每天凌晨00点00分, 第一时间与你相约 每日英文 Smile and stop complaining about the t ...

  7. [转载] java常量池-字符串常量池、class常量池和运行时常量池

    参考链接: 如何在Java中初始化和比较字符串 原文链接:http://tangxman.github.io/2015/07/27/the-difference-of-java-string-pool ...

  8. java 强制转换 效率_Java 性能优化:35 个小细节,让你提升 Java 代码的运行效率...

    代码优化细节 1.尽量指定类.方法的final修饰符 2.尽量重用对象 3.尽可能使用局部变量 4.及时关闭流 5.尽量减少对变量的重复计算 6.尽量采用懒加载的策略,即在需要的时候才创建 7.慎用异 ...

  9. 一起进阶学习JAVA:MySQL海量数据存储与优化

    一起进阶学习JAVA:MySQL海量数据存储与优化 第一部分 分库分表实战及中间件 1.1 背景介绍 1.1.1 背景描述 刚开始我们的系统只用了 单机数据库 随着用户的不断增多,考虑到系统的高可用和 ...

最新文章

  1. 缓存用不好,Bug改到老
  2. 集成学习模型(xgboost、lightgbm、catboost)进行回归预测构建实战:异常数据处理、缺失值处理、数据重采样resample、独热编码、预测特征检查、特征可视化、预测结构可视化、模型
  3. 钱包一般链接那个节点_Zcash屏蔽地址漏洞或揭示全节点IP地址(附解决方案)...
  4. codevs 1200:同余方程
  5. Luogu P3455 [POI2007]ZAP-Queries
  6. 技巧:Excel用得好,天天没烦恼
  7. 系统分析员、系统架构师、项目经理的区别(转载)
  8. python pass关键字神奇吗
  9. Android 多层视差头部背景的实现
  10. linux查看yum源信息,Linux系统配置163或sohu yum源
  11. 镭神智能C32 ROS Rviz使用教程
  12. linux vi 字符串替换
  13. Ae:时间轴面板(图层控制区)
  14. 计算机管理恢复分区,如何在Windows10中删除磁盘管理器中的恢复分区
  15. 木马克星――Trojan Ender正式国际版 2.0.0
  16. R语言ROC分析、ROC曲线可视化及最佳阈值计算(threshold、cutoff)
  17. 可解释深度学习:从感受野到深度学习的三大基本任务:图像分类,语义分割,目标检测,让你真正理解深度学习
  18. 解决vim与外界的复制粘贴(不用安装插件)
  19. 设计模式是什么鬼3(原型)
  20. P1498 南蛮图腾---洛谷(分冶)

热门文章

  1. 17 Redis 的性能受CPU结构影响
  2. java本地缓存简介
  3. WannaCry勒索病毒分析过程**中**
  4. JAVA实现动态数组【代码】
  5. 2018年广东工业大学文远知行杯新生程序设计竞赛 1006 那天的延长线在今天β
  6. C语言:void的用法即解析
  7. 记录一次redis莫名其妙丢失token的解决方案
  8. 业务设计师(产品经理)P级晋升必备职能(P3-P7)
  9. C++ Socket网络编程
  10. android需要电脑输入吗,Android 远程输入法,用电脑给手机输入文字