理论解释
java中对于字符串的拼接,存在常量和常量,常量和变量,变量和变量的三种情况的拼接,其次JVM的优化与否(针对常量和常量的拼接来说)也对创建的对象个数有关。
提示:以下是本篇文章正文内容,下面案例可供参考
一、常量和常量的拼接
String str1=“a”+"b"和String str2=new String(“a”+“b”)
因为这种情况是常量之间相加,经过编译器优化成了String str1 = “ab”,放在字符串常量池中,所以答案是创建了一个对象。如果不考虑优化的情况下,这一共是创建了3个对象的,因为一个双引号就是一个字面量(对象)。同时要考虑字符串常量池中是否存在a,b,ab。
在JVM优化情况下会产生1或2个对象,其中 new String() 必然在 堆中产生一个对象,“a” + “b” 在编译阶段由常量优化