当前位置: 首页 > news >正文

java8中的‘+‘的使用注意事项

问题由来

前几天看了道java基础面试题,试着做了一下,居然还做错了,找了一下原因,涨了一下姿势,看样子也是基础不牢固,都忘了还有这档子事情了,这里简单记录一下。

代码如下:

public static void main(String[] args) {String s1 = "ILoveJava";String s2 = new String("ILoveJava");String s3 = "ILove";String s4 = "Java";String s5 = "ILove" + "Java";String s6 = s3 + s4;final String s7 = "ILove";final String s8 = "Java";String s9 = s7 + s8;System.out.println("s1和s2是否相同:" + (s1 == s2));System.out.println("s1和s5是否相同:" + (s1 == s5));System.out.println("s1和s6是否相同:" + (s1 == s6));System.out.println("s1和s9是否相同:" + (s1 == s9));}

打印的结果为:

// s1和s2是否相同:false
// s1和s5是否相同:true
// s1和s6是否相同:false
// s1和s9是否相同:true

总结

当时以为s1和s6是相等的,没想到还有个编译期常量拼接运行期变量拼接
1、编译期常量拼接(如 “a” + “b”、final 变量拼接):编译器会直接优化为拼接后的结果,存入字符串常量池。
2、运行期变量拼接(如非 final 变量、对象引用):底层通过 StringBuilder(或 StringBuffer)的 append() 方法实现,最后调用 toString() 生成新字符串(存储在堆中)。

http://www.dtcms.com/a/523709.html

相关文章:

  • 德国莱茵金属公司使用Varjo XR-4创建虚拟现实培训解决方案
  • STM32的GPIOx_ODR,GPIOx_BSRR,GPIOx_BRR寄存器的区别与使用
  • 网站建设指南 菜鸟教程简历模板做的最好的是哪个网站
  • Prometheus + Alertmanager + 钉钉告警
  • 基于 Spring Boot + RabbitMQ 实现应用通信
  • docker一键部署prometheus和grafana
  • 《深入剖析TCP Socket API:从连接到断开的全链路解读》
  • 数据库连接池 HikariCP Spring官方内置连接池 配置简单 以性能与稳定性闻名天下
  • Flink Watermark(水位线)机制详解
  • wordpress wpadmin东莞seo网站建设公司
  • 刷赞网站怎么做WordPress编辑器加载慢
  • 【知识图谱】图神经网络(GNN)核心概念详解:从消息传递到实战应用
  • 系统与网络安全------弹性交换网络(5)
  • 车联网车云架构_信息分享01
  • 纯css实现任务头像叠加
  • B2122 单词翻转
  • Tailwind CSS Next.js实战(官方)Tailwind Demo、Tailwind教程
  • 建设个人博客网站做网站页面设计报价
  • 告别显卡焦虑:Wan2.1+cpolar让AI视频创作走进普通家庭
  • 浙人医创新开新篇——用KingbaseES数据库开创首个多院区异构多活容灾架构
  • openstock部署
  • 平替 MongoDB 实践指南 | 金仓多模数据库助力电子证照系统国产化改造
  • android三方调试几个常用命令
  • 响应式网站建设开发公司网站名称需要备案吗
  • 凡科建站平台有一个外国网站专门做街头搭讪
  • 会计与电子商务:中专生的专业选择与发展路径
  • 什么是站点服务器?
  • 自助建站和速成网站合肥公司网站建设多少费用
  • 【麒麟桌面系统】V10-SP1 2503 系统知识——Umi-OCR⽂字识别⼯具
  • macOS 常用命令速查手册