首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >字符串概念中的混淆

字符串概念中的混淆
EN

Stack Overflow用户
提问于 2013-07-01 02:02:14
回答 4查看 163关注 0票数 0
代码语言:javascript
运行
复制
class StringTest1
{
public static final void main(String... a)
{
    String str1="JAVA";
    String str2="WORLD";

    String str3=str1+str2;
}
}

在此过程中将创建多少个对象?我想会创建3个对象。

代码语言:javascript
运行
复制
class StringTest2
{
public static final void main(String... a)
{

    String strTest="JAVA"+"WORLD";
}
}

在这个过程中会创建多少个对象?有多少对象是可访问的?有人告诉我"JAVA"+"WORLD“是一个表达式,它不会存储在字符串池中。

EN

Stack Overflow用户

发布于 2013-07-01 02:10:51

在第一种情况下,将创建三个对象,并且所有这些对象都是可访问的,因为您拥有对它们的活动引用。

在第二种情况下,如果您正在执行如下操作

代码语言:javascript
运行
复制
String str1="JAVA";
String str2="WORLD";
String strTest="JAVA"+"WORLD";

然后,将创建三个对象。在这里,当你创建strTest时,"JAVA“将在字符串对象池中,所以它不会为此分配内存,而是直接从池中引用。对于"WORLD“也是如此。然后将在这两个对象的基础上创建一个新对象,并将其分配给strTest。这里的可访问对象将是3。

但是如果你正在做像这样的事情

代码语言:javascript
运行
复制
 String strTest="JAVA"+"WORLD";

这里只有一个你可以访问的对象,那就是"JAVAWORLD“。池中有对"JAVA“和"WORLD”的引用,但您无法直接访问它们。正如@Vivin Paliath提到的,"JAVA“和"WORLD”将被实例化以形成一个新的对象"JAVAWORLD“。因此,只创建了两个对象。

有关字符串对象池see here的详细信息,请参阅

希望这能有所帮助。

票数 0
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17393271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档