在同一行键入实例化和声明
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=] 以及 y
和 z
等于 Object
?
的新实例
如果我在同一行声明 3 个变量并分别实例化它们,而不是在 3 个单独的行上这样做,是否更有效,或者只是一个意见问题?:
Object x = new Object(),y = new Object(),z = new Object();
声明Object x, y, z
和Object x; Object y; Object z;
从效率的角度来说是完全一样的。即使在 Java 字节码中,这两种情况也没有区别。
当您声明 Object x,y,z = new Object();
时,您仅分配 z
变量。 x
和 y
仍未初始化。
在同一行声明多个变量,从效率的角度来看,与在不同的行声明它们是完全一样的。即使在 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
。对于某些人来说,这两种情况都可能存在,但考虑到此声明是大型项目的一部分,并且您在许多地方都有此类声明。现在,这两个声明可以有所作为。
所以我刚和一个朋友就在 Java 中高效地实例化和声明变量发生了争执;这场争论以僵局告终,因为我们都无法提出无法平等争论的观点,所有这些都归结为意见问题。但是,我的问题是:
如果我在同一行声明 3 个变量:Object x,y,z;
,这与在三个不同的行声明它们是一样的:Object x;
Object y;
Object z;
。但是,在一行中声明它们是否更有效?
如果我在同一行声明 3 个变量并同时实例化它们,它们是否都绑定到相同的 Object/Value?:Object x,y,z = new Object();
或者 x 是否等于 [ 类型的新实例=16=] 以及 y
和 z
等于 Object
?
如果我在同一行声明 3 个变量并分别实例化它们,而不是在 3 个单独的行上这样做,是否更有效,或者只是一个意见问题?:
Object x = new Object(),y = new Object(),z = new Object();
声明
Object x, y, z
和Object x; Object y; Object z;
从效率的角度来说是完全一样的。即使在 Java 字节码中,这两种情况也没有区别。当您声明
Object x,y,z = new Object();
时,您仅分配z
变量。x
和y
仍未初始化。在同一行声明多个变量,从效率的角度来看,与在不同的行声明它们是完全一样的。即使在 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
。对于某些人来说,这两种情况都可能存在,但考虑到此声明是大型项目的一部分,并且您在许多地方都有此类声明。现在,这两个声明可以有所作为。