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

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.kler.cn/a/134649.html

相关文章:

  • Wordpress常用配置,包括看板娘跨域等
  • 使用 Vision 插件让 GitHub Copilot 识图问答
  • 在esxi8.0中安装黑群晖的过程记录及小问题处理
  • 实验5:网络设备发现、管理和维护
  • 统信UOS开发接口DTK
  • 微信小程序的主体文件和页面文件介绍
  • 通付盾Web3专题 | KYT/AML:Web3合规展业的必要条件
  • 蓝桥杯 vector
  • nvm 安装后出现的各种问题解决方法
  • Redis 学习
  • linux 安装中文字体
  • vue中绑定class样式和条件渲染
  • Java中的局部变量和成员变量的区别
  • c语言:解决数组有关的删除,排序,合并等问题。
  • 在Linux上安装RStudio工具并实现本地远程访问【内网穿透】
  • 四、hdfs文件系统基础操作-保姆级教程
  • learning项目总结
  • 后端技术知识点内容-全部内容-面试宝典-后端面试知识点
  • SBPL 打印机上传图片
  • 小程序如何添加打印机来打印订单
  • C进阶---文件操作
  • 根据音频绘制频谱
  • 基于像素特征的kmeas聚类的图像分割方案
  • 安全测试工具分为 SAST、DAST和IAST 您知道吗?
  • 【开源】基于Vue.js的智能教学资源库系统
  • GCC多平台编译会遇到小问题