蔡香满屋
站在牛顿头上吃苹果

首先我们知道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("在堆中创建了两个对象");    
        }
        }
}

  可知在堆中创建了两个对象,但是在常量池中有一个对象,所以共创建了三个对象

posted on 2019-07-25 00:35  蔡香满屋  阅读(1416)  评论(0)    收藏  举报