我也问过这个问题 不过现在我更倾向于 是一个对象
我们可以对代码进行反编译,可以看到 虚拟机究竟把我们代码编译成了什么
通过红色部分可以看到那一串字符串在编译过程直接就成了 abcdef
换一种情况:
我们可以看到 代码到 str =str +" m"+"n"; 时 java虚拟机自动 为我们新建了一个StringBuilder 对象
在 2 处 调用append 添加 str
在 3 处 调用append 添加 m
在 4 处 调用append 添加 n
在 5 处 返回 字符串
我么可以知道: 对于 常量字符串的 + jvm 编译时直接认为 其为 +后的组合
对于变量参与的 + ,如 str +“b” jvm 会自动生成一个StringBuilder 对象 调用append 方法进行操作 再返回字符串
|