Loops 循环中的计数器变量

Loops 循环中的计数器变量,loops,Loops,从良好的编程设计、速度、效率和内存的角度来看,以下哪两个更好 1) for(int i=0;i<10;i++) { ... } 2) int i; ... ... for(i=0;i<10;i++) { ... } 1) 对于(inti=0;i肯定是第一个 它更加简洁明了 变量i仅在for块内可见 除非你真的需要,否则不要尝试 引自: 如果控制for语句的变量不需要在循环之外,最好在初始化表达式中声明该变量 在Java 8中,您还可以执行以下操作: IntStream.range

从良好的编程设计、速度、效率和内存的角度来看,以下哪两个更好

1)
for(int i=0;i<10;i++)
{
...
}

2)
int i;
...
...
for(i=0;i<10;i++)
{
...
}
1)

对于(inti=0;i肯定是第一个

  • 它更加简洁明了
  • 变量i仅在for块内可见
  • 除非你真的需要,否则不要尝试
  • 引自:

    如果控制for语句的变量不需要在循环之外,最好在初始化表达式中声明该变量

    在Java 8中,您还可以执行以下操作:

    IntStream.rangeClosed(1, 10).forEach(System.out::println);
    
    (这是针对Java的) 如果您想在循环之后/之前访问它,请在循环之外使用“int”关键字。但是如果您在循环之外使用它,我建议使用“while”循环,并每次向int添加一个关键字。您不需要将int变量指定为0,因为int不能为null,默认情况下为0

    int i;
    ...
    ...
    ...
    while (i < ***){
       ...
       i++;
    }
    
    inti;
    ...
    ...
    ...
    而(我<***){
    ...
    i++;
    }
    

    第二个变量仅在发生某些事情时中断循环时才有用,因此您可以获得以后发生的迭代次数。

    如果您不需要访问循环外部的
    i
    ,它应该在循环内部。如果您将它放在循环内部,则当控件退出循环时,它会被破坏,从而节省内存。还可以将在循环中键入
    i
    将使代码更具可读性。

    如果您想在使用for之后再次使用i,如下面的代码,请使用第二个

    int i;
    for (i = 0; i < length; i++) {
      ...
      }
    }
    if (i > 50) { /* your code */ }
    
    inti;
    对于(i=0;i50){/*您的代码*/}
    

    但是,如果在使用for之后不需要使用'i',那么为了内存使用和简单起见,请使用第一个。

    两者都不好,因为它们使用的是幻数10.)

    至于使用哪个循环,则取决于上下文:变量
    i
    是否必须在循环外部使用

    如果是这样的话,我会写信

    int i;
    ...
    ...
    i = 0;
    for ( ; i < 10; i++ )
    {
    ...
    }
    
    inti;
    ...
    ...
    i=0;
    对于(;i<10;i++)
    {
    ...
    }
    
    从良好的编程设计、速度、效率和内存的角度来看,以下哪两个更好

    1)
    for(int i=0;i<10;i++)
    {
    ...
    }
    
    2)
    int i;
    ...
    ...
    for(i=0;i<10;i++)
    {
    ...
    }
    
    在Java中,两者都可以使用,在C99之前的C中,只能使用第二种方法

    关于你的问题:

    • 良好的编程设计:1更好,因为变量
      x
      仅用于循环,因此将其包含在循环范围内将是更好的设计

    • 速度:两者相同

    • 效率:两者相同

    • 内存:1更好,因为变量在循环中使用后很容易被丢弃


    用户Alter Mann就使用第二种方法的可移植性提出了一个很好的观点。

    在这个场景中

    注意:-两个程序中都没有性能问题


    但是,只有当我们可以讨论
    i
    的范围时,如果
    i
    循环之外没有要求,那么第一个循环更好,如果不需要,那么你应该按照你2的代码方式声明它。你是否计划在循环之外使用
    i
    呢?如果你使用的是一些旧的c编译器,你必须使用它第二种变体。。。。但是我想说的是,第一个比第二个更清楚…如果你在寻找可移植性,第二个可以在所有版本中编译我不认为这是第一个要回答的问题,使性能应用程序标记是c而不是c99,所以假设这是标准。。。这不是99:)@alk@alk我正在搜索java问题,这个问题出现在那里。谢谢你的警告!