Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 申报好还是一样?_Java_For Loop - Fatal编程技术网

Java 申报好还是一样?

Java 申报好还是一样?,java,for-loop,Java,For Loop,java中什么更好,有什么区别吗?如果有,有什么区别 public void att(){ for(int i=0;i<size-1;i++){ //Do things } for(int i=0;i<size-1;i++){ //Do things } } public void att(){ 对于(inti=0;i我猜像这样 public void att(){

java中什么更好,有什么区别吗?如果有,有什么区别

public void att(){
        for(int i=0;i<size-1;i++){
            //Do things
        }
        for(int i=0;i<size-1;i++){
            //Do things
        }
}
public void att(){
对于(inti=0;i我猜像这样

public void att(){
    int i; //Same variable
    for(i=0;i<size-1;i++){ //Same variable
        //Do things
    }
    for(i=0;i<size-1;i++){ //Same variable
        //Do things
    }
}
public void att(){
int i;//相同的变量
对于(i=0;i我想像这样

public void att(){
    int i; //Same variable
    for(i=0;i<size-1;i++){ //Same variable
        //Do things
    }
    for(i=0;i<size-1;i++){ //Same variable
        //Do things
    }
}
public void att(){
int i;//相同的变量

for(i=0;i完全独立的for循环(每个循环都有自己的
i
变量)更好,因为有一个通用的编程准则,即变量应该具有最窄的工作范围。在第二个示例中,
i
的范围超出了它的使用范围


两者之间不会有性能差异。

完全独立的for循环(每个循环都有自己的
i
变量)更好,因为有一个通用的编程准则,即变量应该具有最窄的工作范围。在第二个示例中,
i
的范围超出了它的使用范围d


这两者之间不会有性能上的差异。

如果您在效率方面没有具体问题,请不要尝试以这种方式优化代码。正如Pshemo所说:过早优化是万恶之源

我所看到的两者之间唯一的真正区别是,第二行长一行,因此可读性较差


另外,如果有什么区别的话,我会说在第二种情况下,变量是在更高的范围内声明的,我认为这实际上是一件坏事。通常,您希望在使用变量的范围内声明变量,尽可能深地嵌套,因此具有尽可能短的生命周期。

如果您需要,请不要尝试以这种方式优化代码正如Pshemo所说:过早的优化是万恶之源

我所看到的两者之间唯一的真正区别是,第二行长一行,因此可读性较差


另外,如果有什么不同的话,我会说在第二种情况下,变量被声明在一个更高的范围内,我认为这实际上是一件坏事。通常,你希望变量被声明在它们所使用的范围内,嵌套得尽可能深,因此寿命尽可能短。

你说的“更好”是什么意思?“有什么区别吗"是的,方法范围vs循环范围。还要记住,过早优化是万恶之源。编写清晰的代码,让我们为您处理优化。从严格的效率角度来看,第二种方法当然更好,但我们这里讨论的是无限小的改进。就最大限度地提高代码的可理解性而言,第一种方法很可能是可行的更好的是,因为“i”应该限制在使用它的范围内,而不是。如果在循环结束后需要
i
的值,则需要在循环上方声明
i
。例如,如果你
从循环中断开
,你可能需要使用
i
中存储的内容。对于实际的编码,它是在
for
中声明变量非常方便。作用域也总是很重要的。我认为让
int I;…for(I…
和以后让
for(int I…)会很麻烦
,上面的代码可能有一个off by one错误,因为它无法与最后一个元素循环。通常的习惯用法是(i=0;i
你说的“更好”是什么意思?“它有什么区别吗?”是的,方法范围vs循环范围。还要记住,过早优化是万恶之源。编写清晰的代码,让我们为您处理优化。从严格的效率角度来看,第二种方法当然更好,但我们这里讨论的是无限小的改进。就最大限度地提高代码的可理解性而言,第一种方法很可能是可行的更好的是,因为“i”应该限制在使用它的范围内,而不是。如果在循环结束后需要
i
的值,则需要在循环上方声明
i
。例如,如果你
从循环中断开
,你可能需要使用
i
中存储的内容。对于实际的编码,它是在
for
中声明变量非常方便。作用域也总是很重要的。我认为让
int I;…for(I…
和以后让
for(int I…)会很麻烦
,上面的代码可能有一个off by one错误,因为它无法与最后一个元素循环。通常的习惯用法是(i=0;i
@Oscar我很惊讶,我必须说:)@Oscar我很惊讶,我必须说:)
public void att(){
    for(int i=0;i<size-1;i++){ //Different variables
        //Do things
    }
    for(int i=0;i<size-1;i++){ //Different variables
        //Do things
    }
}