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

String的字符串拼接

java中
String a = “123” + “234”;
String b = “123”;
String c = b + “234”;
其中a和c的区别是什么? a == c 为什么为false

在Java中,字符串的处理特别是涉及到字符串常量和字符串变量的连接时,会涉及到字符串池(String Pool)和字符串对象的创建方式。

String a = “123” + “234”;
这里"123"和"234"都是字符串常量。在编译时,Java编译器会优化这种字符串常量的连接,实际上它会将这两个字符串合并为一个字符串常量"123234"。因此,a引用的是字符串池中的一个字符串。

String b = “123”;
这里b是一个对字符串常量"123"的引用。

String c = b + “234”;
在这里,由于b是一个变量,所以b + "234"的连接操作是在运行时完成的。这意味着会创建一个新的字符串对象来表示连接后的字符串,并且这个新对象不会被放入字符串池中(除非显式调用.intern()方法)。

总结:
a == c为false的原因是:

a是对字符串池中的字符串常量的直接引用。
c是一个在运行时创建的新字符串对象,即使它的内容与a相同,它们在内存中是两个不同的对象。

http://www.lryc.cn/news/236615.html

相关文章:

  • 反渗透水处理成套设备有哪些
  • DPC15 国产带有 SPI 接口的独立 CAN 控制器兼容替代MCP2551
  • 【ELK01】ELK简介以及ElasticSearch安装、ES客户端工具-Head安装、报错问题整理
  • 根据音频绘制频谱
  • SSL证书对网站SEO的好处
  • YB506AB是一款理电池充、放电管理专用芯片,集成锂电池充电管理和降压DC-DC电路。
  • Linux | C语言中volatile关键字的理解
  • 汇编层面有三个主要的操作对象
  • React中的Redux:简介和实例代码
  • Modbus转Profinet网关在金银精炼控制系统中应用案例
  • 小程序商城免费搭建之java商城 电子商务Spring Cloud+Spring Boot+二次开发+mybatis+MQ+VR全景+b2b2c
  • Rabin加解密算法(python3)
  • 【带头学C++】----- 七、链表 ---- 7.5 学生管理系统(链表--上)
  • (四)什么是Vite——冷启动时vite做了什么(源码、middlewares)
  • Docker部署MinIO对象存储服务器结合Cpolar实现远程访问
  • C#入门(1):程序结构、数据类型
  • Scala---元组
  • 【Linux】冯诺依曼体系结构、操作系统、进程概念、进程状态、环境变量、进程地址空间
  • 【hive-解决】HiveAccessControlException Permission denied: CREATEFUNCTION
  • 内网穿透的应用-通过内网穿透快速搭建公网可访问的Spring Boot接口调试环境
  • 解决 uniapp 开发微信小程序 不能使用本地图片作为背景图 问题
  • 常用中间件封装思路粗记
  • 探索SPI:深入理解原理、源码与应用场景
  • Web3名词解释
  • Vatee万腾外汇市场新力量:vatee科技决策力
  • 【HarmonyOS开发】配置开发工具DevEco Studio
  • 探索亚马逊大语言模型:开启人工智能时代的语言创作新篇章
  • zabbix-proxy分布式监控
  • springboot生成PDF,并且添加水印
  • Tensorflow2.0:CNN、ResNet实现MNIST分类识别