/* 分析下面代码运行后共创建了几个String对象? */ class StringTest04{ public static void main(String[] args) { //内存图:见下图 String对象创建内存图 String s1 = new String("abc"); String s2 = new String("abc"); /* 分析上面两行代码,出现了"abc",那么在字符串常量池中一定会创建一个String对象"abc",程序中 出现了两次运算符"new",那么在堆内存中一定会有两个String对象存在,并且这两个String对象中 保存的String对象的内存地址指向了方法区字符串常量池中的String对象"abc"。 所以一共创建了三个String对象。 */ } }
String对象创建内存图