String s = new String("abc");这个代码中一共创建了两个对象,我们可以从内存开始分析,首先在栈内存创建一个String s ,然后一new就在堆内存创建了一个String类型的对象即new String(),而这个对象是给出字符串常量“abc”的,这个常量需要到方法区的常量池去找,找到就赋给new String(),如果找不到就创建一个然后赋给new String(),然后常量池中的“abc”就把地址值赋给堆内存中的new String(),它就指向了方法区常量池的“abc”,然后new String()把它的地址值赋给s,s就指向了堆内存中的new String(),这样在这个过程中一共创建了2个对象。
|