不会产生的,测试代码如下:
final String a1 = "aaaaaaaaaaaaaaaaaaaaaaaaa";
final String a2 = "aaaaaaaaaaaaaaaaaaaaaaaaa";
final String a3 = new String("aaaaaaaaaaaaaaaaaaaaaaaaa");
System.err.println(a1==a2);
//a1和阿a2的对比输出为true,即相同的地址的
//a1或a2去跟a3对比,输出为false的,表示地址不同,a3是内存中新分配的
不会的,当你初始化一个字符串的时候,会先到常量池找,如果存在就指向该字符串,如果不存在再创建