【问题标题】:Type instantiation and declaration on the same line在同一行键入实例化和声明
【发布时间】:2015-12-23 22:33:33
【问题描述】:

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

如果我在同一行声明 3 个变量:Object x,y,z;,则与在三个单独的行上声明它们相同:Object x;Object y;Object z;。但是,将它们全部声明在一行上是否更有效?

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

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

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

【问题讨论】:

    标签: java object types instance instantiation


    【解决方案1】:

    但是,将它们全部声明在一行中是否更有效?

    没有任何变化,两者都相同,除了可读性计数。

    如果我在同一行声明 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 已初始化。对于某些人来说可能在这两种情况下,但考虑到这个声明是巨大项目的一部分,你在很多地方都有这种声明。现在,这两个声明都可以有所作为。

    【讨论】:

    • 那么这只是一个观点和可读性的问题。
    【解决方案2】:
    1. 从效率的角度来看,声明Object x, y, zObject x; Object y; Object z; 是完全一样的。即使在 Java 字节码中,这两种情况也没有区别。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多