首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

String s=new String(abc)创建了几个对象?

String str=new String("abc");   紧接着这段代码之后的往往是这个问题,那就是这行代码究竟创建了几个String对象呢?...String str只是定义了一个名为str的String类型的变量,因此它并没有创建对象;=是对变量str进行初始化,将某个对象的引用(或者叫句柄)赋值给它,显然也没有创建对象;现在只剩下new String...如果有,则不再创建的对象,直接返回已存在对象的引用;如果没有,则先创建这个对象,然后把它加入到字符串池中,再将它的引用返回。因此,我们不难理解前面三个例子中头两个例子为什么是这个答案了。...只有使用引号包含文本的方式创建String对象之间使用“+”连接产生的对象才会被加入字符串池中。...对于所有包含new方式新建对象(包括null)的“+”连接表达式,它所产生的对象都不会被加入字符串池中,对此我们不再赘述。

87010

java面试题:new String(abc)创建几个对象;String a=abc,String b=new String(abc)区别

String str2=new String(“abc”)区别有两种方式创建String对象:字面量赋值、new关键字使用字符串字面值创建String对象,如String str = "abc":java...中有个字符串常量池,当创建一个字面量字符串时,JVM首先检查字符串常量池中是否已经存在该字符串,如果存在 则直接返回字符串对象的引用,否则就创建一个的字符串对象并放入字符串常量池中,最终将该对象的引用赋值给变量...即最终字符串常量池和堆内存都会有这个对象,最后返回的是堆内存的对象引用只要使用new方法,不管字符串常量池中是否存在"abc",都会在堆中创建的对象(注意 和字符串常量池中的"abc"相区分),方式一的效率高于方式二由于...2.String str="abc",String str=new String("abc")创建了几个对象经过上文讲解,我们就知道两者区别在于 创建对象个数不同String str=“abc"创建了几个对象...append使用arraycopy的复制方法,也没有产生的对象,而StringBuilder的toString()方法通过前面数组new了一个String@Overridepublic String

13800
领券