我想问一下这两种代码之间是否存在任何影响(例如性能)。
方法1:
Object object = new Object(); // Different variables
Object object2 = new Object();
.
.
.
方法2:
Object object = new Object();
.
.
object = new Object(); // Reuse the same variable
.
这只是编码风格或其他任何原因,例如预留内存,性能更好吗?
答案 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垃圾收集。