在同一行键入实例化和声明

Type instantiation and declaration on the same line

所以我刚和一个朋友就在 Java 中高效地实例化和声明变量发生了争执;这场争论以僵局告终,因为我们都无法提出无法平等争论的观点,所有这些都归结为意见问题。但是,我的问题是:

如果我在同一行声明 3 个变量:Object x,y,z;,这与在三个不同的行声明它们是一样的:Object x; Object y; Object z;。但是,在一行中声明它们是否更有效?

如果我在同一行声明 3 个变量并同时实例化它们,它们是否都绑定到相同的 Object/Value?:Object x,y,z = new Object(); 或者 x 是否等于 [ 类型的新实例=16=] 以及 yz 等于 Object?

的新实例

如果我在同一行声明 3 个变量并分别实例化它们,而不是在 3 个单独的行上这样做,是否更有效,或者只是一个意见问题?:

Object x = new Object(),y = new Object(),z = new Object();
  1. 声明Object x, y, zObject x; Object y; Object z;从效率的角度来说是完全一样的。即使在 Java 字节码中,这两种情况也没有区别。

  2. 当您声明 Object x,y,z = new Object(); 时,您仅分配 z 变量。 xy 仍未初始化。

  3. 在同一行声明多个变量,从效率的角度来看,与在不同的行声明它们是完全一样的。即使在 Java 字节码中,这两种情况也没有区别。

However, is it more efficient to declare them all on one line?

没有任何变化,两者相同,除了可读性很重要。

If I declare 3 variables on the same line and instantiate them all simultaneously, are they all bound to the same Object/Value?:

没有,只有z会被初始化。如果 x 和 y 是 class 级变量,则它们将是 null

If I declare 3 variables on the same line and instantiate them all individually rather than do so on 3 separate lines, is it more efficient, or just a matter of opinion?:

不,这与分别实例化它们没有什么不同。

然而,为了把话题引向不同的方向,这种声明的要点是基于可读性约定所有其他程序员都应该同意。

先读这个,

Object o1,o2,o3 = new Object(),o4,o5,o6,o8;

现在这个,

Object o1;
Object o2;
Object o3 = new Object();
Object o4;
Object o5;
Object o6;
Object o8;

在这种情况下,您首先意识到缺少 o7 并且初始化了 o3。对于某些人来说,这两种情况都可能存在,但考虑到此声明是大型项目的一部分,并且您在许多地方都有此类声明。现在,这两个声明可以有所作为。