String a = "a" + "b". 不会被JVM解释成String a = "ab"的, 相反这个是编译时的优化, 是编译器做的, 不是JVM解释时做的, JVM解释时是严格按照程序逻辑解释的. 另外, String不可变是因为它不提供修改的接口而不是因为它本身是final的, final用在类层面上是说这个类不可扩展, 而不是这个类的内容不可变化。String本身内容不能改变是因为String类没有提供对外的接口去改变char[]的值, 而不是因为final(这个你没提到, 算我的补充吧)。
String和Stringbuffer Stringbuilder
最新推荐文章于 2024-05-20 16:05:30 发布