首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在以下Java字符串中创建了多少个对象

在以下Java字符串中创建了多少个对象
EN

Stack Overflow用户
提问于 2013-01-24 08:57:27
回答 2查看 6.9K关注 0票数 1

可能重复: How many java objects generated by this code? and why?

我很困惑于以下几点

代码语言:javascript
复制
String s1 = new String("Java");
String s2 = new String("Java");

这里创建了多少个对象?

代码语言:javascript
复制
String s1 = new String("Java");
String s2 = new String("Ruby");

这里创建了多少个对象?

代码语言:javascript
复制
String s1 = new String("Java");
String s2 = "Java";

这里创建了多少个对象?

代码语言:javascript
复制
String s1 = "Java";
String s2 = "Java";

这里创建了多少个对象?

EN

回答 2

Stack Overflow用户

发布于 2013-01-24 09:02:29

您的第一部分代码:

创建了2个对象。如果字符串池中不存在"Java“,则会在其中创建并添加一个字符串。

你的第二部分代码:

创建了两个对象,如果字符串池中既没有"Java“也没有"Ruby”,则创建两个字符串并将其添加到其中。

您的第3部分代码:

创建了一个对象。并执行相同的条件来添加字符串池。

您的第4部分代码:

如果字符串池中没有"Java“,则只创建一个对象。否则没有创建新对象。

票数 0
EN

Stack Overflow用户

发布于 2013-01-24 09:05:58

代码语言:javascript
复制
String s1 = new String("Java");
String s2 = new String("Java");

它将在堆中创建2个对象。

代码语言:javascript
复制
String s1 = new String("Java");
String s2 = new String("Ruby");

这将在堆中创建2个对象。

代码语言:javascript
复制
String s1 = new String("Java");
String s2 = "Java";

这将为第一行在堆中创建一个对象。对于第二行,它将检查"Java“是否存在于字符串池中还是not.If是否存在,它将不会创建一个新的string.It来返回对池中已经存在的字符串的引用。

代码语言:javascript
复制
String s1 = "Java";
String s2 = "Java";

第一行将检查字符串池中是否存在"Java“,或者not.If是否存在,它不会创建一个新的string.It,将返回对池中已经存在的字符串的引用。第二行将获得对已经创建的string.So的引用,如果存在"Java“或最大一个对象,则没有新的对象。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14497335

复制
相关文章

相似问题

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