Java 额外变量或现有变量

Java 额外变量或现有变量,java,Java,我想问一下这两种代码之间是否存在任何影响(如性能) 方法1: Object object = new Object(); // Different variables Object object2 = new Object(); . . . 方法2: Object object = new Object(); . . object = new Object(); // Reuse the same variable . 这仅仅是编码风格的不同还是其他原因的不同,比如

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

方法1:

Object object = new Object();     // Different variables
Object object2 = new Object();
.
.
.
方法2:

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

这仅仅是编码风格的不同还是其他原因的不同,比如保留内存、更好的性能?

唯一的区别是如果您的方法挂起很长时间,并且这些变量没有超出范围。如果方法像几乎所有方法一样快速返回,那么变量中的引用将在如此短的时间内被抛出,因此任何差异都是无关的


在任何情况下,总是首先优先考虑可读和可理解的代码,不要做任何复杂或可能不清楚的事情,除非有需要修复的特定、可测量的性能问题。为变量指定有意义的名称,并尽可能限制它们的范围,这样就不会有任何问题。

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

在method2中,创建一个引用并指定一个新对象,然后再次创建一个新对象并指定到引用中。现在,您的第一个对象没有引用,因此它符合垃圾收集器的条件

祝你好运

什么时候

Object object = new Object();     // Different variables
Object object2 = new Object();
Object object = new Object();
.
.
object = new Object();          // Reuse the same variable
您正在创建两个对象,其中object和object2是对它们的引用。这里的意图是您将同时使用这两个对象

当你这样做的时候

Object object = new Object();     // Different variables
Object object2 = new Object();
Object object = new Object();
.
.
object = new Object();          // Reuse the same variable
这里仍然要创建两个对象,但第二次执行object=new object()时,第一个对象符合GC的条件,前提是不再需要它 在其他地方使用

所以,您应该选择哪种方式取决于需求。但就性能而言,我看不出有多大影响,除了第二种情况,第一个对象符合GC的条件
如果您没有将对象引用传递到其他任何地方。

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

投票选择编码风格…在这两种情况下,您都创建了两个实例,没有值得关注的性能影响引用一个引用指向两个不同的
对象
。所以这只是编码风格的问题,对程序完全没有影响?唯一的内存差异是第二个可以节省指针的内存