Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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_Variables_Optimization - Fatal编程技术网

Java 为什么在声明变量时建议使用尽可能窄的范围?

Java 为什么在声明变量时建议使用尽可能窄的范围?,java,variables,optimization,Java,Variables,Optimization,当声明Java变量时 为什么建议使用尽可能窄的范围 那样 其建议 不建议这样做 因为需要它的范围必须声明,而在不需要它的地方,它可能是一个不相关的变量。这个问题的答案在于:你为什么要把东西放在与它们无关的地方?我希望你一般不会,至少在你十几岁的时候不会 想想那天地板上所有的衣服,没有一个妈妈知道哪个干净,哪个脏。她是把它们都洗了,还是都留下了,还是怎么了?这类技术中的内存管理也是如此。在用什么?我能搬家吗?我能处理什么?等等 在这些情况下,维护干净的作用域等有很多好处,但这只是一件自然的事情。在

当声明Java变量时
为什么建议使用尽可能窄的范围
那样

其建议

不建议这样做


因为需要它的范围必须声明,而在不需要它的地方,它可能是一个不相关的变量。这个问题的答案在于:你为什么要把东西放在与它们无关的地方?我希望你一般不会,至少在你十几岁的时候不会

想想那天地板上所有的衣服,没有一个妈妈知道哪个干净,哪个脏。她是把它们都洗了,还是都留下了,还是怎么了?这类技术中的内存管理也是如此。在用什么?我能搬家吗?我能处理什么?等等


在这些情况下,维护干净的作用域等有很多好处,但这只是一件自然的事情。在某些情况下,作用域中的代码片段可以被视为“工作单元”,如果重复使用变量(名称+类型),它还可以防止数据冲突。

更易于阅读、维护和证明程序是正确的

不管怎么说,它覆盖得很好


还可以尝试搜索“limiting variable scope”(

),因为在声明变量时,会创建该变量并在内存中保留一个空间。即使不使用此变量,也会创建空间。仅在需要时声明变量。

一旦执行了作用域,该作用域内声明的所有变量都可以进行垃圾收集,因此如果不再需要,则需要携带这些变量


在您的例子中,如果(…){…}块被执行,
d
符合GC

的条件,那么无论是否需要,您都将执行someCalculation()。效率不高。

出于同样的原因,你不在stackoverflow个人资料上公布你的电话号码、电子邮件地址和国籍ID号,不管你来自哪个国家。您以最简单的方式管理变量,以防止混乱,提高可读性,并减少潜在的混乱。

一旦执行了一个作用域,该作用域内声明的所有变量都有资格进行垃圾收集。更广泛的作用域使您更接近全局变量及其所有乐趣/陷阱。没有人提到GC so+1。
if (x>3) {
double d = someCalculation();
// ......
System.out.println("...");
} else {
// No use of d
System.out.println("...");
}
double d = someCalculation();
if (x>3) {          
// ......
System.out.println("...");
} else {
// No use of d
System.out.println("...");
}