2015-09-26 90 views
2

所以我只是有一个朋友关于有效实例化和Java中声明变量参数;那个论点以僵局结束,因为我们都不能提出不能平等对抗的观点,所有这些观点都可以归结为一个意见。不过,我的问题是:类型实例化和声明在同一行

如果我宣布说,在同一行3个变量:Object x,y,z;,它是一样的宣布他们在三个不同的线路:Object x;Object y;Object z;。但是,将它们全部在一行上进行报告会更有效率吗?

如果我在同一行声明3个变量,同时实例化所有这些,都是他们都绑定到同一个对象/价值?:Object x,y,z = new Object();或者是X等于Object类型的新实例以及yz等于到Object的新实例?

如果我在同一行声明3个变量和实例他们都单独而不是在3个独立的行这样做,是不是更有效,或者只是一个意见?:

Object x = new Object(),y = new Object(),z = new Object(); 

回答

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

因此,这只是归结为意见和可读性问题。 – Matthewacon

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

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

  3. 在同一行声明多个变量是绝对相同声明他们在从视效率点单独的行。即使在Java字节码中,这两种情况也没有区分。