其实我有点困惑,在下面的“代码处理”中创建了多少对象。在创建字符串对象时创建了多少对象
String s=new String("A");
s=s+"B";
其实有人说在这里会创建4个对象,但是在整个处理过程中却不明白。
请谁能给我详细描述还包括存储部分,例如串池等
其实我有点困惑,在下面的“代码处理”中创建了多少对象。在创建字符串对象时创建了多少对象
String s=new String("A");
s=s+"B";
其实有人说在这里会创建4个对象,但是在整个处理过程中却不明白。
请谁能给我详细描述还包括存储部分,例如串池等
您有两个String
文字对象,即"A"
和"B"
。然后你用new String("A");
显式实例化一个新的“A”实例。最后,在执行String
级联时创建第四个实例s+"B"
s +“B”后面的StringBuilder? – TheLostMind 2014-10-01 12:41:41
@TheLostMind StringBuilder实例或其他一些实例的“B”会产生一个新的“String”实例(并可能实例化一个新的StringBuilder)。如果我们在每个'String'实例中计算字符数组,我们可以得到更多的'Object'实例。 – 2014-10-01 12:44:05
也许你是对的..在这种情况下,支持StringBuilder的数组也必须计数,并且String的长度也会改变。但是4是*可访问的*数目的对象。 :P – TheLostMind 2014-10-01 12:53:22
String
是文字"A"
,也就是说,如果没有实习 之前。String
是由new
关键字生成的实例。"B"
,再次,如果之前没有实习。s
和"B"
的拼接。正确。值得注意的是围绕“A”的'new String()'是多余的。 – vikingsteve 2014-10-01 12:38:30
@vikingsteve绝对。我也同意这看起来像1Z0-803的问题,就像你在评论中提到的那样:) – Mena 2014-10-01 12:39:26
还会有一个StringBuilder对象被创建。共5个对象 – TheLostMind 2014-10-01 12:40:54
这看起来像是一个认证问题;)您通过了吗? – vikingsteve 2014-10-01 12:36:59
我猜'字符串s =新的字符串是一个,''“A”是另一个,“B”是一个和连接运算符'+'将创建第四个 – 2014-10-01 12:37:03
不是直接重复,因为这样会问创建了许多'objects',这大概可以包含'StringBuilder',也可以按照其他人的评论。 – vikingsteve 2014-10-01 12:52:11