You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

日志方法参数中使用+拼接的字符串字面量是否存入编译器常量池?

方法参数中的字符串字面量拼接是否会在编译时合并?

代码对比

第一种写法:

log.info("very long string  {}, " + " another string {}", a, b)

第二种写法:

log.info("very long string {}, another string {}", a, b)

已知的编译期字符串合并规则

根据Java规范,字符串字面量会被存储在编译器常量池中,并在编译时创建。例如:

String x = "very long string " + "another string";

这段代码在编译时完全等价于:

String y = "very long string another string";

由于x和y都是编译时就完成求值的字面量,它们会指向常量池中的同一个引用。

核心疑问

那如果字符串拼接操作是作为方法的参数来执行的(比如开头的日志调用场景),上述编译期合并的结论是否依然成立?


内容的提问来源于stack exchange,提问作者olaf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 22:22:01