关于JAVA字符串对象创建的问题
突然发现的一个问题:Stringa=newString(“abc”);因为String对象的创建不只一种,直接双引号可以创建,new关键字也可以创建,然后问题就来了:引号...
突然发现的一个问题:
String a = new String(“abc”);
因为String对象的创建不只一种,直接双引号可以创建,new关键字也可以创建,然后问题就来了:
引号产生的对象在编译时期就产生了,而new字段产生的是在程序运行的时期,这摆明了有两个a对象,但是用的时候只用了一个,用的是哪个?另一个去哪里了? 展开
String a = new String(“abc”);
因为String对象的创建不只一种,直接双引号可以创建,new关键字也可以创建,然后问题就来了:
引号产生的对象在编译时期就产生了,而new字段产生的是在程序运行的时期,这摆明了有两个a对象,但是用的时候只用了一个,用的是哪个?另一个去哪里了? 展开
3个回答
展开全部
String类型的变量都是final的。
用不到的会自动垃圾回收。
用不到的会自动垃圾回收。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在内存中其实只有一个,只不过用了一个创建的是对象 ,一个是引用。用的是引用,另一个就是这个引用指向的对象
追问
不明白,如果对象和引用是分开创建的话,那创建了对象没有引用怎么调用对象呢?如果只有引用没有对象,引用还有什么用呢?这两个能分开么?String a="abc";这种可是直接创建了对象和引用的。直接用引号创建的对象存在String pool中,new关键字创建的对象存在heap中,要检查也没有用啊,不在同一个地方,两个对象。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询