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问题,这个问题出现在那里。谢谢你的警告!