首先我们知道String str = new String("abc")创建了两个对象,
这两个对象,首先一个是new String()方式在堆内存中创建一个对象,第二个就是“abc"就是字符串常量对象在字符串常量池中创建,意思就是abc是常量池中的一个对象,该对象的属性是char[] values =[],该数组存的值是abc
str是栈内存中的变量也就是一个引用变量

让我们看个例题:
public class StringTest{
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String s1 = new String("abc") ;
        String s2 = new String("abc") ;
        if( s1 == s2 ){ //不会执行的语句
       System.out.println("在堆中创建了一个对象");
 
    }
        else{ // 输出这句
        System.out.println("在堆中创建了两个对象");    
        }
        }
}
可知在堆中创建了两个对象,但是在常量池中有一个对象,所以共创建了三个对象
                
            
        
浙公网安备 33010602011771号