Java 申报好还是一样?
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(){
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
}
}