【发布时间】:2013-08-18 09:59:16
【问题描述】:
在模拟 OCJP 认证时,我发现了这个问题:
1. StringBuffer s1 = new StringBuffer("abc");
2. StringBuffer s2 = s1;
3. StringBuffer s3 = new StringBuffer("abc");
How many objects are created ?
他们说正确答案是 4,因为他们说:
s1 is one object, s2 is another object,
s3 is another object and "abc" is another String Object .
但对我来说这是错误的,应该是 3,因为 s1 和 s2 是同一个对象。你怎么看?
【问题讨论】:
-
如果真的如其所言,那么您应该停止使用该网站。
-
是的,应该是 3。至少据我所知
-
不会像在 C++ 中那样在赋值上调用复制构造函数。在 Java 中,我认为您应该执行类似 MyClass s2 = new MyClass(s1);
-
请将链接发布到违规网站,以便我们避免它。
-
学究气,不可能知道。 StringBuffer 构造函数可以在后台创建任意数量的对象。
标签: java