额外变量或现有变量

时间:2014-10-28 03:38:33

标签: java

我想问一下这两种代码之间是否存在任何影响(例如性能)。

方法1:

Object object = new Object();     // Different variables
Object object2 = new Object();
.
.
.

方法2:

Object object = new Object();
.
.
object = new Object();          // Reuse the same variable
.

这只是编码风格或其他任何原因,例如预留内存,性能更好吗?

4 个答案:

答案 0 :(得分:0)

唯一的区别是你的方法会长时间停留,而且这些变量不会超出范围。如果方法快速返回,就像几乎所有方法一样,那么变量中的引用将在如此短的时间内被抛出,以至于任何差异都无关紧要。

在任何情况下,始终优先考虑可读和可理解的代码,除非存在需要修复的特定的,测量的性能问题,否则不要做任何复杂或可能不清楚的事情。为变量赋予有意义的名称,并尽可能限制其范围,并且不会出现任何问题。

答案 1 :(得分:0)

在method1中,您将创建两个引用并分配两个不同的对象。这两个对象不符合垃圾收集器的条件。

在method2,您正在创建一个引用并分配一个新对象,然后再次创建一个新对象并分配到引用中。现在你的第一个对象没有引用,因此它有资格使用垃圾收集器。

祝你好运!!!

答案 2 :(得分:0)

当你这样做时

Object object = new Object();     // Different variables
Object object2 = new Object();

您正在创建两个对象,其中object和object2是对它们的引用。这意味着你将同时使用这两个对象。

当你这样做时

Object object = new Object();
.
.
object = new Object();          // Reuse the same variable

这里你仍然在创建两个对象,但是一旦你第二次做object = new Object(),第一个对象就有资格获得GC了 用在其他地方。

那么,你应该采用哪种方式取决于要求。但就性能而言,除了第二种情况外,我看不到太大的影响,第一个对象符合GC的条件 如果你还没有在其他任何地方传递对象引用。

答案 3 :(得分:0)

当您重用现有变量时(如第二个示例中所示),您将失去对您创建的第一个对象的引用。如果没有其他变量引用它,它将被JVM垃圾收集。