【问题标题】:Java: How many objects are created in the code?Java:代码中创建了多少对象?
【发布时间】:2014-11-05 15:39:08
【问题描述】:

以下代码创建了多少个对象?

String a, b, c;
a = "1234";
b = a;
c = a + b;

有人告诉我答案是2,因为只有 a 和 b 指向他们自己的数据。

c 只能使用ab 创建。然而,声明一个变量的行为难道不被认为是创建它吗?这个问题很模糊吗?我说3

【问题讨论】:

  • 如果我这样做String a;,对象在哪里?如果我做String a = null;怎么办?
  • 2 个对象,a="1234" 和 a+B
  • “但是,声明一个变量的行为难道不考虑创建它吗?” 是的,您创建的是变量,而不是对象。
  • 你可以告诉你的老师这个问题很模糊,因为 + 运算符可能会创建两个对象(1- StringBuilder,2- String)
  • 另外,“1234”字符串可能会被保留,因此您甚至可以询问它是否符合“创建”对象的条件;)。

标签: java object


【解决方案1】:

a = "abcd" 创建一个String 对象,并使用值“abcd”对其进行初始化。所以这是一个对象

b = a 使b 指向与a 相同的位置,因此a + b 将创建一个新对象,然后将其分配给c。这样一共创建了两个对象

【讨论】:

  • 我相信这就是老师想要的。在这个阶段,学生不应该知道+ 可以StringBuilders 实现,或者Stringchar[] 支持。
【解决方案2】:

我认为答案是2。当b=a时,其实a对b有一个引用。当您在 Eclipse 上调试程序时,您会看到 a 和 b 具有相同的 id。它们实际上是一个对象。

【讨论】:

  • 正如@FlorentBayle 已经提到的。 a + b 创建另一个 StringBuilder 类型的对象
猜你喜欢
  • 2019-08-22
  • 1970-01-01
  • 2020-06-06
  • 2012-05-13
  • 2019-09-19
  • 2014-08-01
  • 1970-01-01
  • 2022-12-12
  • 1970-01-01
相关资源
最近更新 更多