所以我和朋友讨论了如何在Java中有效地实例化和声明变量;因为我们都不能指出一个不能同样进行的论点,所有这些都归结为一个意见问题。但是,我的问题是:
如果我在同一行声明3个变量:Object x,y,z;
,则与在三个单独的行中声明它们相同:Object x;
Object y;
Object z;
。但是,在一行上声明它们是否更有效?
如果我在同一行声明3个变量并同时实例化它们,它们是否都绑定到相同的Object / Value?:Object x,y,z = new Object();
或者x等于Object
类型的新实例以及y
和z
等同于Object
的新实例?
如果我在同一行上声明3个变量并单独实例化它们而不是在3个单独的行上实例化,那么效率更高,还是只是意见问题?:
Object x = new Object(),y = new Object(),z = new Object();
答案 0 :(得分:2)
但是,在一行上声明它们是否更有效?
除可读性计数外,两者都没有变化。
如果我在同一行声明3个变量并将它们全部实例化 同时,它们是否都绑定到相同的对象/值?:
不仅会初始化z
。如果它们是类级变量,则x和y将为null
。
如果我在同一行声明3个变量并将它们全部实例化 单独而不是在3个单独的行上这样做,是不是更多 有效,还是只是意见问题?:
不,它与单独实例化没什么不同。
然而,为了使主题朝不同的方向发展,这种声明的要点是基于所有其他程序员都应该同意的可读性和约定。
首先阅读,
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
已初始化。可能在某些人的情况下,但是考虑到这个声明是大项目的一部分,你在很多地方都有这种声明。现在,这两个声明都可以有所不同。
答案 1 :(得分:1)
从效率的角度来看,声明Object x, y, z
和Object x; Object y; Object z;
绝对相同。即使在Java字节码中,也不区分这两种情况。
当您声明Object x,y,z = new Object();
时,只会指定z
变量。 x
和y
仍然未初始化。
在同一条线上声明几个变量与从效率角度在不同的行上声明它们完全相同。即使在Java字节码中,也不区分这两种情况。