String s=new String("abc");一共创建了几个对象

如果字符串常量池中不存在“abc”,该语句执行时会先在字符串常量池中创建一个“abc”对象,在执行new语句时在堆去开辟新的空间,创建“abc”字符串,同时栈区会有一个引用s指向堆区的对象,此时如果要算上栈区的引用,共创建3个对象,不算,则创建两个对象。 二:如果字符串常量池中存在“abc”,则只会在堆区创建一个“abc”字符串,同时栈区有一个引用指向堆中的对像。如果算上栈中的引用,共创建了两个对象,不算,则创建了一个对象。

 

posted @ 2019-05-18 10:55  kpsmile  阅读(3582)  评论(0编辑  收藏  举报